我有一个数据框列表,它是通过一次读取 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]])})
Run Code Online (Sandbox Code Playgroud)
问题似乎在于将数据框分配给粘贴的名称。包裹它as.character()没有帮助。
这确实有效:
"df1" <- data.frame(l[[1]])
Run Code Online (Sandbox Code Playgroud)
问题似乎出在我的paste()函数输出中的某个地方,但输出中有str()“chr”。有什么想法可以让我的方法奏效吗?有没有更简洁的方法来取消列出我的数据框?
一种方法:
list2env(setNames(l,paste0("df",seq_along(l))), envir = parent.frame())
Run Code Online (Sandbox Code Playgroud)
尽管我会在为时已晚之前听取@baptiste 的建议并避免这样做。为什么?因为在两天后,您会发现自己陷入了使用get()andpaste和混乱循环试图一次将函数应用于所有数据集的困境。如果你把它们放在一个列表中,你就可以做lapply(l,functionname)。