我正试图在它们上使用rbind。但是我需要一个已经在我的全球环境中的所有dataframes的列表。我该怎么做呢?
我用来在目录中导入20个csv文件的代码。基本上,必须合并成一个数据帧。
temp = list.files(pattern = "*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))发布于 2014-08-26 15:49:28
从您发布的代码中,我建议您启动一个新的R会话,并使用以下代码再次读取文件
do.call(rbind, lapply(list.files(pattern = ".csv"), read.csv))发布于 2014-08-26 15:48:07
此函数应以所有data.frames作为元素返回一个正确的列表。
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))然后你就可以用
do.call(rbind, dfs)当然,让一堆data.frames躺在一起是非常愚蠢的,它们是如此相关,以至于您想要对它们进行rbind。听起来他们可能一开始就应该列在名单上。
我建议你远离assign(),这一直是事情可能发生冲突的标志。试一试
temp <- list.files(pattern="*.csv")
dfs <- lapply(temp, read.csv)这应该会立刻返回一个列表。
发布于 2014-08-26 15:47:28
ls函数列出了环境中的所有内容。get函数获得一个具有给定名称的变量。您可以使用class函数获取变量的类。
如果你把它们都放在一起,你就能做到:
ls()[sapply(ls(), function(x) class(get(x))) == 'data.frame']它将返回当前环境中data.frames的字符向量。
https://stackoverflow.com/questions/25509879
复制相似问题