4

我有一个数据框列表,它是通过一次读取 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”。有什么想法可以让我的方法奏效吗?有没有更简洁的方法来取消列出我的数据框?

4

1 回答 1

6

一种方法:

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

虽然我会在为时已晚之前听取@baptiste 的建议并避免这样做。为什么?因为在两天的时间里,你会发现自己被困在使用get()paste混乱的循环中,试图一次将一个函数应用于所有数据集。如果你把它们放在一个列表中,你就可以做到lapply(l,functionname)

于 2013-07-10T23:42:56.127 回答