2016-07-14 70 views
3

我是相當新於R ,並會盡我所能,讓自己的理解。 假設我有一個包含多個對象的現有rdata文件。 現在我想添加一個數據框到它,我該怎麼做? 我試過以下內容:數據幀添加到現有的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="")) 

但是這似乎不起作用?

+0

你看到了什麼錯誤? – xxfelixxx

+0

當我訪問文件的cntents我得到 裝入對象,MYFILE 但裝入對象不是內容 – radhika

+0

嘗試改變'裝入對象< - 負載(rdataPath)''到負載(rdataPath)'。我想你可能會覆蓋'loadObjects'。 – xxfelixxx

回答

1

我不能確定你的實際使用情況,但如果你必須「追加」新對象的rda文件,這裏是一個方法。這種試圖通過load荷蘭國際集團一切從rda文件中的對象的要高明到一個新的environment(有很多教程和指南,討論環境的使用和相關性,哈德利的"Advanced R"是一個做了很好的工作,我認爲)。

這第一步加載的所有對象到一個新的(空)的環境。這是非常有用的使用,否則空環境,使我們可以得到相當容易使用ls從它的對象的所有

e <- new.env(parent = emptyenv()) 
load("path/to/.rda", envir = e) 

要添加的對象應該加載到環境中的變量中。需要注意的是美元符號的訪問看起來一樣list s,這使得兩者(1)容易混淆兩者,和(2)容易理解命名索引,正在$提供。

e$myFile <- read.csv("yourFile.csv") 

這最後一塊,重新保存rda文件,是一種間接方法。 ls(envir = e)返回環境內所有對象的變量名稱。這很好,因爲save可以處理對象或其名稱。

do.call("save", c(ls(envir = e), list(envir = e, file = "newsave.rda"))) 

意識到,這不是技術上附加的data.frame到rda文件,它已經結束了,寫rda文件,一個新的,恰好包含所有以前的對象和新的數據。幀。

+0

radhika,你似乎有一個[問及 - 運行的習慣](https://stackoverflow.com/users/5322608/radhika)。 StackOverflow的禮節包括接受關閉的答案,以及「獎勵」那些花時間試圖幫助你的人。如果答案不充分,解釋「爲什麼」它不起作用是有道理的,否則你不可能在這個問題上得到更多的幫助。請接受所提供的答案,評論爲什麼它不夠,或者在您的問題中添加評論以解釋「沒有用,我不再需要它」。 – r2evans

相關問題