为列表的每个元素创建单独的变量

时间:2013-07-10 23:26:32

标签: r list

我有一个数据框列表,它是通过一次读取25个.csv文件生成的。我想取消数据框的列表以开始空间分析。也就是说,我希望列表中的每个元素都有单独的数据框。

我尝试了unlist(),但它没有产生我想要的结果。我也尝试了lapply()的方法,但它会产生错误。这是我尝试过的:

x <- 1:3
y <- 4:6

l <- lapply(1:2, function(x){data.frame(x, y)})

lapply(1:length(l), function(i){paste('df', i, sep = '') <- data.frame(l[[i]])})

问题似乎在于将数据框分配给粘贴的名称。用as.character()包装它并没有帮助。

这确实有效:

"df1" <- data.frame(l[[1]])

似乎问题出现在paste()函数的输出中,但输出有str()'chr'。任何想法我如何使我的方法工作?有没有更清晰的方法来取消我的数据框?

1 个答案:

答案 0 :(得分:4)

一种方法:

list2env(setNames(l,paste0("df",seq_along(l))), envir = parent.frame()) 

虽然在为时已晚之前我会听从@baptiste的建议并避免这样做。 为什么?因为在两天的时间内你会发现自己陷入困境,使用get()paste以及凌乱的循环来尝试将函数同时应用于所有数据集。如果您将它们保存在列表中,则只需执行lapply(l,functionname)