我是编程新手,R 是我要学习的第一门编程语言。
我想合并 100 个数据帧;每个数据框包含一列和 20 个观察值,如下所示:
df1 <- as.data.frame(c(6,3,4,4,5,...))
df2 <- as.data.frame(c(2,2,3,5,10,...))
df3 <- as.data.frame(c(5,9,2,3,7,...))
...
df100 <- as.data.frame(c(4,10,5,9,8,...))
我尝试使用 df.list <- list(df1:df100)
为所有数据框构建一个整体数据框,但我不确定是否 df.list
将所有数据框中的所有列合并到一个表中。
谁能告诉我我说的对不对?我需要做什么?
最佳答案
我们可以使用 mget
将所有对象放入 list
中,方法是在 'ls' 中指定 pattern
来检查对象名称以 'df' 开始 (^
) 后跟一个或多个数字 (\\d+
) 直到字符串的结尾 ($
)
df.list <- mget(ls(pattern = '^df\\d+$'))
在list
中,如果我们想cbind
所有的数据集,在do.call
中使用cbind
>
out <- do.call(cbind, df.list)
注意:最好不要在全局环境中创建多个对象。我们可以直接将所有数据读入 list
或在 list
中构建,即如果文件是从 .csv
读取的,则获取所有使用 list.files
从感兴趣的目录中提取带有 .csv
的文件,然后循环遍历 lapply
中的文件,使用 单独读取它们read.csv
和 cbind
files <- list.files(path = 'path/to/your/location',
pattern = '\\.csv$', full.names = TRUE)
out <- do.call(cbind, lapply(files, read.csv))
https://stackoverflow.com/questions/68146488/
相关文章:
Python - 如何将 ImmutableDict 复制到可变字典?
php - 找不到 Heroku 类 'NumberFormatter'
flutter - 未处理的异常 : type '_InternalLinkedHashMap
arrays - 谷歌表 : How to find the length of array?
android - Room - 模式导出目录未提供给注释处理器,因此我们无法导入模式
r - 使用ggsave时遇到 "Error: $ operator is invalid for