我对 R 相当陌生,我会尽力让自己理解。假设我有一个包含多个对象的现有 rdata 文件。现在我想向它添加一个数据框,我该怎么做?我尝试了以下方法:
write.data.loc <- 'users/Jim/Objects'
rdataPath <- 'users/Jim/Objects.Rda'
myFile<- read.csv("myFile.csv")
loadObjects <- load(rdataPath)
save(loadObjects,myFile,file=paste(write.data.loc,".Rda",sep=""))
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用?
我不确定您的实际用例,但是如果您必须将新对象“附加”到rda文件中,这里是一种方法。这试图通过load将rda文件中的所有对象放入一个新对象来变得聪明environment(有许多教程和指南讨论了环境的使用和相关性,我认为Hadley 的“高级 R”做得很好)。
第一步将所有对象加载到一个新的(空)环境中。这是非常有用的使用,否则空环境,使我们可以得到所有从它相当容易使用的对象ls。
e <- new.env(parent = emptyenv())
load("path/to/.rda", envir = e)
Run Code Online (Sandbox Code Playgroud)
您要添加的对象应加载到环境中的变量中。请注意,美元符号访问看起来与lists相同,这使得 (1) 容易混淆两者,以及 (2) 易于理解$提供的命名索引。
e$myFile <- read.csv("yourFile.csv")
Run Code Online (Sandbox Code Playgroud)
最后一块,重新保存rda文件,是一种间接方法。在ls(envir = e)返回的环境中的所有对象的变量名。这很好,因为save可以处理对象或它们的名称。
do.call("save", c(ls(envir = e), list(envir = e, file = "newsave.rda")))
Run Code Online (Sandbox Code Playgroud)
意识到这在技术上并不是将data.frame附加到rda文件中,而是rda用一个恰好包含所有先前对象和新的 data.frame 的新文件覆盖文件。