r - 加载多个 .RData 并绑定(bind)到单个 data.frame 中

标签 r dplyr tidyverse purrr rdata

我的文件夹中有多个 .RData。我可以按如下方式加载它们:

df1 <- data.frame(X = 1:10)
df2 <- data.frame(X = 1:10)

save(df1, file = "df1.RData", compress = "xz")
save(df2, file = "df2.RData", compress = "xz")

rm(list = ls())

load("df1.RData")
load("df2.RData")

并使用dplyr中的bind_rows函数将它们绑定(bind)为

library(tidyverse)
bind_rows(df1, df2)

我想知道是否可以加载所有文件并像这样绑定(bind)它们

list.files(
      path      = "."
    , pattern    = "*.RData"
    , full.names = TRUE
    )  %>%
  map_dfr(.x = ., .f = ~load(file = .x))

最佳答案

您可以使用 get() 从调用环境返回数据,或者将它们加载到新环境中并随后绑定(bind)它们。请注意,.Rdata 文件可以包含多个对象,但假设这些对象都是一致的,您可以这样做:

library(purrr)
library(dplyr)

df1 <- data.frame(X = 1:10)
df2 <- data.frame(X = 1:10)

save(df1, file = "df1.RData", compress = "xz")
save(df2, file = "df2.RData", compress = "xz")

list.files(pattern = "\\.RData$") %>%
   map_df(~ get(load(file = .x)))

    X
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10 10
11  1
12  2
13  3
14  4
15  5
16  6
17  7
18  8
19  9
20 10 

或者:

temp_env <- new.env()

list.files(pattern = "\\.RData$")  %>%
  map(~load(file = .x, envir = temp_env)) 

bind_rows(as.list(temp_env))

关于r - 加载多个 .RData 并绑定(bind)到单个 data.frame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69054275/

相关文章:

r - 在 R 中按行计算 2 个值之间的 NA 数量

r - 解释 R 输出 Rpart 分类树代理分割

r - 取消聚合数据框

r - 如何选择数据帧 `df1` 的连续行,其值与向量 `A` 中的值匹配

r - 将矩阵乘以向量的最快方法

r - 使用facet_grid 在 geom_boxplot 上进行 Tukey 测试结果

r - mutate_each 中的 one_of(vector) 导致找不到对象

r - mutate_at 在某些情况下不会创建变量后缀?

r - 在列表中查找对象的位置编号

r - 使用 for 循环整理工作 R 代码