R語言:資料輸出至檔案

weixin_34026276發表於2017-11-15

問題

如果你想將資料寫進一個檔案,應該怎樣操作?

解決方案

寫入分隔符文字檔案

用 write.csv() 將資料寫入一個檔案是最簡單的方法。 write.csv() 預設包括行名,但是這通常是不必要的,這種預設可能會導致迷惑。

# 一個樣本資料框data <- read.table(header=TRUE, text='
 subject sex size       1   M    7
       2   F    NA
       3   F    9
       4   M   11
 ')# 寫入檔案,取消預設行名write.csv(data, "data.csv", row.names=FALSE)# 同上,只是‘NA’由空白格代替write.csv(data, "data.csv", row.names=FALSE, na="")# 使用製表符,取消行名和列名write.table(data, "data.csv", sep="\t", row.names=FALSE, col.names=FALSE)

儲存為 R 資料格式

write.csv() 和 write.table() 與其它資料分析程式的互操作性是最好的。然而,它們不會保護資料結構的特殊屬性,如列是否為字元型或因素,或者因素水平的順序。為了做到這一點,它需要在特殊的 R 格式下寫出來。

下面是三種主要的方法:

第一個方法:輸出R原始碼,執行時,將重新建立該物件。這針對大多數資料物件,但它可能無法重建一些更復雜的資料物件。

# 儲存為文字格式,容易被 R 載入dump("data", "data.Rdmpd")# 可以儲存多個物件dump(c("data", "data1"), "data.Rdmpd")# 重新載入資料 source("data.Rdmpd")# 當載入資料時,原始資料的名稱將自動被使用

下一個方法是寫出 RDS 格式的資料物件,這種格式可以是二進位制的,也可以是 ASCII。二進位制格式更緊湊,ASCII 格式在像 Git 版本控制系統時則更高效。

# 二進位制 RDS 格式儲存單個物件saveRDS(data, "data.rds")# 或者,用 ASCII 格式saveRDS(data, "data.rds", ascii=TRUE)# 重新載入資料data <- readRDS("data.rds")

用 RData 格式可以將多個物件儲存到一個的檔案.

# 二進位制 RData 格式儲存多個物件save(data, file="data.RData")# 或者,用 ASCII 格式save(data, file="data.RData", ascii=TRUE)# 可以儲存多個物件save(data, data1, file="data.RData")# 重新載入資料load("data.RData")

saveRDS() 和 save()最重要的區別:當你用 saveRDS() 儲存資料時,你指定物件的名稱;當你用 save() 載入資料時,它將自動使用原始物件的名稱。自動使用原始物件名稱有時可以簡化工作流程,但是當它在不同的環境中使用將資料分配給其它物件時也是有缺點的。










本文轉自 h2appy  51CTO部落格,原文連結:http://blog.51cto.com/h2appy/1857242,如需轉載請自行聯絡原作者

相關文章