我有三个数据集保存在R格式A.RData,B.RData,C.RData(每个大小~2Gb)。每个文件包含三个变量X,Y,Z。
我无法在不首先重命名变量的情况下加载A.RData和B.RData。由于数据集很大,所以这些步骤:
load("A.RData")
A = list(X=X,Y=Y,Z=Z)
rm(X,Y,Z)
load("B.RData")
B = list(X=X,Y=Y,Z=Z)
rm(X,Y,Z)
需要一些时间。
有没有办法直接在列表A中导入A.RData中的数据,而不必复制变量?
答案 0 :(得分:1)
是的,有。
A <- new.env()
load('A.RData', envir=A)
A <- as.list(A)
答案 1 :(得分:0)
Matthew Plourde提供的解决方案是可行的方法。将来,如果您使用saveRDS
(而非save
)保存数据,则可以避免这些问题。
函数saveRDS
保存单个对象。例如:
X <- 1
Y <- 2
Z <- 3
# put the objects in a list
mylist <- list(X, Y, Z)
# save the list
saveRDS(mylist, file = "myfile.rds")
rm(X, Y, Z, mylist) # remove objects (not necessary)
# load the list
newlist <- readRDS("myfile.rds")
# [[1]]
# [1] 1
#
# [[2]]
# [1] 2
#
# [[3]]
# [1] 3
与save
相反,对象的名称不存储。因此,您可以将readRDS
的结果分配给另一个名称。请注意,您必须将所有变量放在 one 列表中。