Учитывая набор данных с несколькими уникальными элементами в столбце, я хотел бы разбить эти уникальные элементы на новые кадры данных, но чтобы они располагались на один уровень ниже.По сути, добавление дополнительного уровня к команде split()
.
Например (используя встроенную таблицу iris
в качестве примера:
iris
mylist <- split(iris, iris$Species)
создает список mylist
, который содержит 3 подсписка, setosa
, versicolor
, virginica
.
mylist[["setosa"]]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
Но я бы хотел поместить эту таблицу данных в подсписок с именем results
НО сохранить имя списка верхнего уровня как setosa
. Такое, что:
mylist$setosa["results"]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
Я мог бы сделать это с помощью ручных манипуляций, но я бы хотел, чтобы это запускалось автоматически. Я безуспешно пытался с mapply
mapply(function(names, df)
names <- split(df, df[["Species"]]),
unique(iris$Species), iris)
Любой совет? Также с удовольствием использоватьtidyr
пакет, если это облегчает ...