如何在R中合并两个.rda文件?

时间:2019-07-10 18:44:33

标签: r rda

我有两个.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"

1 个答案:

答案 0 :(得分: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)