簡體   English   中英

用對象名R寫文件

[英]R write file with names of the objects

考慮一下:
我有帶有對象名稱的矢量fav.activities

fav.activities <- c("swiming", "basketball", "baseball", "football")  
names(fav.activities) <- c("Tom", "Ben", "Paul", "Ann")  

我現在要保存整個文件。 用過的

write(fav.activities)

但是不會保存對象的名稱。 我應該怎么做?

write()使用cat()並在將輸出發送到屏幕/文件時刪除"names"屬性:

R> cat(fav.activities)
swiming basketball baseball footballR>

如果要將向量讀出到文本/定界文件,則一種方法是強制轉換為矩陣並使用write.table()

R> write.table(t(as.matrix(fav.activities)), "foo.txt", row.names = FALSE)
R> readLines("foo.txt")
[1] "\"Tom\" \"Ben\" \"Paul\" \"Ann\""                    
[2] "\"swiming\" \"basketball\" \"baseball\" \"football\""

額外的\\"就是R將字符串打印到控制台的方式。在我的OS中,文件如下所示:

$ cat foo.txt
"Tom" "Ben" "Paul" "Ann"
"swiming" "basketball" "baseball" "football"

即它是一個用空格分隔的文件。 可以定義其他分隔符。 參見?write.table

如果您只想讀取向量以便在以后的R會話中使用,則save()saveRDS()是兩個選項:

ls()
save(fav.activities, file = "obj.rda")
rm(list = ls())
load("obj.rda")
ls()
saveRDS(fav.activities, file = "obj2.rds")
new.fav <- readRDS("obj2.rds")
ls()
all.equal(fav.activities, new.fav)

輸出如下:

R> ls()
[1] "fav.activities"
R> save(fav.activities, file = "obj.rda")
R> rm(list = ls())
R> load("obj.rda")
R> ls()
[1] "fav.activities"
R> saveRDS(fav.activities, file = "obj2.rds")
R> new.fav <- readRDS("obj2.rds")
R> ls()
[1] "fav.activities" "new.fav"       
R> all.equal(fav.activities, new.fav)
[1] TRUE

save()saveRDS()之間的主要區別在於,前者保存對象及其名稱,因此只能使用相同的對象名稱進行還原。 saveRDS()只是序列化對象,然后在將序列化的對象加載到R會話時必須將其分配給對象。

如果要以文本格式保存數據,請使用:

write.table(fav.activities, file = "filename.txt", col.names = FALSE)

要從文本文件還原對象:

dat <- read.table("filename.txt", stringsAsFactors = FALSE)
fav.activities <- structure(dat[ , 2], .Names = dat[ , 1])

如果要保存R對象的表示形式,請使用:

save(fav.activities, file = "filename.RData")

還原對象:

load("filename.RData")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM