首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何列出我的全球环境中的所有数据文件?

如何列出我的全球环境中的所有数据文件?
EN

Stack Overflow用户
提问于 2014-08-26 15:40:48
回答 6查看 28.2K关注 0票数 21

我正试图在它们上使用rbind。但是我需要一个已经在我的全球环境中的所有dataframes的列表。我该怎么做呢?

我用来在目录中导入20个csv文件的代码。基本上,必须合并成一个数据帧。

代码语言:javascript
复制
temp = list.files(pattern = "*.csv")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-08-26 15:49:28

从您发布的代码中,我建议您启动一个新的R会话,并使用以下代码再次读取文件

代码语言:javascript
复制
do.call(rbind, lapply(list.files(pattern = ".csv"), read.csv))
票数 12
EN

Stack Overflow用户

发布于 2014-08-26 15:48:07

此函数应以所有data.frames作为元素返回一个正确的列表。

代码语言:javascript
复制
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))

然后你就可以用

代码语言:javascript
复制
do.call(rbind, dfs)

当然,让一堆data.frames躺在一起是非常愚蠢的,它们是如此相关,以至于您想要对它们进行rbind。听起来他们可能一开始就应该列在名单上。

我建议你远离assign(),这一直是事情可能发生冲突的标志。试一试

代码语言:javascript
复制
temp <- list.files(pattern="*.csv")
dfs <- lapply(temp, read.csv)

这应该会立刻返回一个列表。

票数 31
EN

Stack Overflow用户

发布于 2014-08-26 15:47:28

ls函数列出了环境中的所有内容。get函数获得一个具有给定名称的变量。您可以使用class函数获取变量的类。

如果你把它们都放在一起,你就能做到:

代码语言:javascript
复制
ls()[sapply(ls(), function(x) class(get(x))) == 'data.frame']

它将返回当前环境中data.frames的字符向量。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25509879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档