【问题标题】:How to combine two .rda files in R?如何在 R 中合并两个 .rda 文件?
【发布时间】:2019-11-20 10:40:40
【问题描述】:

我有两个 .rda 文件,其中许多变量和数据框已设置为某些值。两个 rda 文件都具有相同的变量名称和数据框名称。但是,它们的顺序不同。我想将两个 rda 文件组合成一个 .rda 文件,就像我们附加两个数据帧的方式一样。

我尝试使用rbind 组合两个包含 .rda 文件的对象,如下所示

X <- c(1,2,3)
Y <- c("A","B","C")

rbind(X,Y)

save(X,Y,file="samplerda.rda")
load(file = "samplerda.rda")


X <- c(4,5,6)
Y <- c("D","E","F")
save(X,Y,file="samplerda1.rda")
load(file = "samplerda1.rda")

ob1 <- load(file = "samplerda.rda")
ob2 <- load(file = "samplerda1.rda")
combine12 <- rbind(ob1, ob2)
save(combine12, file="En1.rda")
load("En1.rda")
print(combine12)

但是我在输出下面打印了我期望的 combine12 对象

X  Y 
1 "A"
2 "B"
3 "C"
4 "D"
5 "E"
6 "F"

实际输出为

    [,1] [,2]
ob1 "X"  "Y" 
ob2 "X"  "Y"

【问题讨论】:

    标签: r rda


    【解决方案1】:

    load() 函数返回它加载的对象的名称,所以ob1ob2 都将包含c("X", "Y"),当你rbind 它们时,你会得到你在combine12 中看到的矩阵。

    你需要更复杂的代码来做你想做的事,例如:

    env1 <- new.env()
    env2 <- new.env()
    ob1 <- load(file = "samplerda.rda", envir = env1)
    ob2 <- load(file = "samplerda1.rda", envir = env2)
    stopifnot(all(ob1 == ob2))  # Sanity check
    
    combine12 <- list()
    for (n in ob1) {
      combine12[[n]] <- c(get(n, env1), get(n, env2))
    }
    combine12 <- as.data.frame(combine12)
    

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 1970-01-01
      • 2022-01-10
      • 2014-06-06
      • 2016-10-19
      • 1970-01-01
      • 2014-01-07
      • 2021-12-19
      相关资源
      最近更新 更多