0

これを考慮してください:私はオブジェクトの名前
を持つベクトルを持っています:fav.activities

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

今すぐファイル全体を保存したい。使用済み

write(fav.activities)

ただし、オブジェクトの名前は保存されません。どうすればいいですか?

4

2 に答える 2

3

write()を使用し、出力を画面/ファイルに送信するときに属性cat()を削除します。"names"

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

ベクトルをテキスト/区切りファイルに読み上げたい場合、1 つのオプションは行列に強制し、次を使用すること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()2saveRDS()つのオプションがあります。

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セッションにロードするときにオブジェクトに割り当てる必要があるオブジェクトをシリアル化するだけです。

于 2012-09-05T09:33:09.400 に答える
2

データをテキスト形式で保存する場合は、次を使用します。

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")
于 2012-09-05T09:27:49.563 に答える