我的数据框如下:
-1, 0, 1
每个列表中都有矢量数据。 我希望每个列表都是一个数据框。我不知道该怎么做。
编辑: @Allen Cameron已经回答了问题。
要获取具有列表的数据框到数据框内成为数据框的每个列表,请使用:
short
其中
-1, 0, 1
是带有列表的原始数据框
答案 0 :(得分:4)
假设我们有一个像这样的数据框:
df <- data.frame(a = 1:3)
df$b <- lapply(1:3, function(x) list(sample(3)))
df
#> a b
#> 1 1 1, 2, 3
#> 2 2 3, 1, 2
#> 3 3 2, 3, 1
在这里我们可以看到列b
是列表列表:
class(df$b)
#> [1] "list"
class(df$b[1])
#> [1] "list"
如果我们要使b列每一行中的每个列表成为数据框,我们可以这样做:
df_list <- setNames(lapply(df$b, function(x) data.frame(var = x[[1]])),
c("df1", "df2", "df3"))
这为我们提供了一个数据帧列表,每个数据帧都有自己的名称:
df_list
#> $df1
#> var
#> 1 1
#> 2 2
#> 3 3
#>
#> $df2
#> var
#> 1 3
#> 2 1
#> 3 2
#>
#> $df3
#> var
#> 1 2
#> 2 3
#> 3 1
如果需要,可以将它们提取到全局工作区中,如下所示:
list2env(df_list, globalenv())
现在我们有了
df1
#> var
#> 1 2
#> 2 3
#> 3 1
df2
#> var
#> 1 1
#> 2 2
#> 3 3
df3
#> var
#> 1 3
#> 2 1
#> 3 2
我个人而言,对于大多数用途,我会将数据帧保留在df_list
中,以避免污染全局工作空间,并使遍历数据帧的操作变得更加容易。
答案 1 :(得分:0)
我无法发布代码,slackoverflow不允许。
I have 37 lists in dataframe 'file contents'. I want each list to be an induvidual dataframe