Вот способ использования split.default
и lapply
# input data
iris2 <- iris[, c(5, 1:4)]
Мы разбиваем данные по столбцам, исключая первый столбец, это возвращает список.
iris2_split <- split.default(iris2[-1], names(iris2)[-1])
Затем мы используем lapply
и cbind
, чтобы прикрепить первый столбец iris2
к каждой записи в iris2_split
.
out <- lapply(iris2_split, cbind, iris2[1])
Результат (усеченный)
lapply(out, head, 3)
#$Petal.Length
# Petal.Length Species
#1 1.4 setosa
#2 1.4 setosa
#3 1.3 setosa
#$Petal.Width
# Petal.Width Species
#1 0.2 setosa
#2 0.2 setosa
#3 0.2 setosa
#$Sepal.Length
# Sepal.Length Species
#1 5.1 setosa
#2 4.9 setosa
#3 4.7 setosa
#$Sepal.Width
# Sepal.Width Species
#1 3.5 setosa
#2 3.0 setosa
#3 3.2 setosa