add a new column to a dataset based on the values of a character variable

If df is already ordered, you can simply do:

df$inst <- c(object1, object1, object2)

Or in a tidyverse way,

df <- df |>
  add_column(inst = c(object1, object1, object2))

Here is a reprex:

object1 <- 1:10
object2 <- 101:110
df <- data.frame(New_column = c(rep("West", 20), rep("Atlantic constrained", 10)))

df$inst1 <- c(object1, object1, object2)

library(tibble)

df <- df |>
  add_column(inst2 = c(object1, object1, object2))

df
#>              New_column inst1 inst2
#> 1                  West     1     1
#> 2                  West     2     2
#> 3                  West     3     3
#> 4                  West     4     4
#> 5                  West     5     5
#> 6                  West     6     6
#> 7                  West     7     7
#> 8                  West     8     8
#> 9                  West     9     9
#> 10                 West    10    10
#> 11                 West     1     1
#> 12                 West     2     2
#> 13                 West     3     3
#> 14                 West     4     4
#> 15                 West     5     5
#> 16                 West     6     6
#> 17                 West     7     7
#> 18                 West     8     8
#> 19                 West     9     9
#> 20                 West    10    10
#> 21 Atlantic constrained   101   101
#> 22 Atlantic constrained   102   102
#> 23 Atlantic constrained   103   103
#> 24 Atlantic constrained   104   104
#> 25 Atlantic constrained   105   105
#> 26 Atlantic constrained   106   106
#> 27 Atlantic constrained   107   107
#> 28 Atlantic constrained   108   108
#> 29 Atlantic constrained   109   109
#> 30 Atlantic constrained   110   110

Created on 2022-07-15 by the reprex package (v2.0.1)