我有一个数据框列表,它是通过一次读取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'。任何想法我如何使我的方法工作?有没有更清晰的方法来取消我的数据框?
答案 0 :(得分:4)
一种方法:
list2env(setNames(l,paste0("df",seq_along(l))), envir = parent.frame())
虽然在为时已晚之前我会听从@baptiste的建议并避免这样做。
为什么?因为在两天的时间内你会发现自己陷入困境,使用get()
和paste
以及凌乱的循环来尝试将函数同时应用于所有数据集。如果您将它们保存在列表中,则只需执行lapply(l,functionname)
。