Создание многих переменных в al oop, как вы делаете, не очень хорошая идея. Вместо этого вы должны использовать список:
ys <- split(dairy$FARM, dairy$FARM)
names(ys) <- paste0("y", names(ys))
Первая строка создает список ys
, который содержит ваш y1
в качестве первого элемента (ys[[1]]
), ваш y2
в качестве второго элемента (ys[[2]]
) и так далее. Вторая строка именует элементы списка так же, как вы называли свои переменные (y1
, y2
, et c.), Поскольку в конце они будут использоваться для именования столбцов во фрейме данных.
В пакете dplyr
есть функция, которая берет список фреймов данных и связывает их все вместе в виде столбцов:
library(dplyr)
df <- bind_cols(ys)
Обратите внимание, что это будет работать только если каждое значение появляется в столбце FARM
ровно столько же раз, так как все столбцы во фрейме данных должны иметь одинаковую длину.