将列表文件取消列表到多个数据帧

时间:2014-01-09 14:27:06

标签: r dataframe

我创建了一个包含72个元素的R列表。我如何将此文件取消归档到72个具有每个元素名称的单个数据帧?

以下是一个例子:

L <- list(data.frame(matrix(1:4,2,2)),
          data.frame(matrix(9:12,2,2)),
          data.frame(matrix(5:8,2,2)))
names(L)<-c("a","b","c")

如何获得三个数据帧a,b和c?

3 个答案:

答案 0 :(得分:7)

有一个功能......

list2env( L , .GlobalEnv )

但是像James说的那样,你需要有充分的理由不想将它们保存在列表中。使用列表要比72个单独的data.frame更容易!你想做什么。

答案 1 :(得分:2)

您可以将assign用于lapply内的全局环境。注意我已将调用包装在invisible中,以避免将输出打印到控制台。

invisible(lapply(names(L),function(x) assign(x,L[[x]],.GlobalEnv)))
ls()
[1] "a" "b" "c" "L"
a
  X1 X2
1  1  3
2  2  4

但是,虽然元素在列表中,但使用lapply可能更容易使用它们。

答案 2 :(得分:1)

我想到了这一点,但詹姆斯已经发布了一个更好的答案(基本上是我的相同,但不那么酷)然后西蒙甚至更好。为了完整起见,我会把它扔掉,但要留意他们的警告:

for (i in seq_along(L)) {
    assign(names(L)[i], L[[i]], .GlobalEnv)
}

修改

根据Konrad的回应,我意识到你可以做到:

for (i in names(L)) {
    assign(i, L[[i]], .GlobalEnv)
}

我不知道for循环可以使用非索引。凉。