将数据框转换为具有R中一列名称的数据框的命名列表

时间:2020-11-10 21:39:45

标签: r dataframe dplyr purrr

所以我将一个列表变成了一个长长的数据框,现在有一个列,它曾经是列表的名称,类似:

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 barbaz的值现在是仅包含一行的数据帧:1表示a ,2代表b ...

lst = list(foo=data.frame(b=1), bar=data.frame(bar=2), baz=data.frame(b=3))

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))
相关问题