所以我将一个列表变成了一个长长的数据框,现在有一个列,它曾经是列表的名称,类似:
df <- map_df(list, ~as.data.frame(.x), .id="id")
现在,我想反过来说,根据该列将数据框转回命名列表。因此,例如以下数据:
df = data.frame(a=c("foo", "bar", "baz"), b=1:3)
df
a b
1 foo 1
2 bar 2
3 baz 3
现在,我想创建一个列表,其中包含列a的名称,因此foo
bar
和baz
的值现在是仅包含一行的数据帧:1表示a ,2代表b ...
lst = list(foo=data.frame(b=1), bar=data.frame(bar=2), baz=data.frame(b=3))
答案 0 :(得分:2)
您还可以使用split
:
split(df[-1], df[1])
答案 1 :(得分:1)
第二种选择是将dplyr用于分组变量:
library(dplyr)
df %>%
group_split(a, .keep = FALSE)
答案 2 :(得分:1)
我们可以使用:
library(tibble)
as.list(deframe(df))