2012-02-24 4 views
2

データフレームをディスクにダンプし、ダンプから同じデータフレームを再作成できる一対のRコマンドを探しています。Rでデータフレームをエクスポートし、タイプを保存します

私はwrite.tableは、エクスポート/インポートのための事実上のですが、それは、列の種類が保持されませんので、それは次の例では失敗したとします

df = data.frame('foo' = 'bar') 
df$foo = as.character(df$foo) 

typeof(df$foo) 
# = "character" 

write.table(df,'~/df.rdata') 
df2 = read.table('~/df.rdata') 

typeof(df2$foo) 
# = "integer" 
+1

何(セーブ '程度をstringsAsFactors=FALSEの使用を注意してください)'と '負荷() '。簡単に他のプログラムにエクスポートすることはできませんが、R言語に戻して読んでいるのであれば、おそらく多くの意味があります。 – Chase

答えて

1

@TylerRinkerが言ったように、dputsaveは、おそらく最も適合しています。

...しかしsaveloadはあなたがsave名、保存するオブジェクトのを与え、その後、loadが戻ってそれらの名前にオブジェクトをロードすることで、時には少し不便です。

代替方法はsaveRDSreadRDSです(名前はちょっと奇妙です)。彼らはもう少し低レベルであり、単一のオブジェクトを保存します。データフレームを作成するときに

df <- data.frame(foo = 'bar', stringsAsFactors=FALSE) 
saveRDS(df, file='foo.rds') 
df2 <- readRDS('foo.rds') 
identical(df, df2) 

も...

+0

ありがとうTommy、 'stringsAsFactors'と 'identical'も指摘しています – zoltanctoth

+0

@zoltanctothようこそ。 Btw、 'stringsAsFactors = FALSE'を' read.table'に指定することもできます。 – Tommy

2

dputsave(objects, file="foo.RData")を両方の列の型を維持します。保存と資源データオブジェクトは、おそらく賢い選択であり、再ロードすることができます。load("foo.RData")

2

は機能saveloadを使用してください。

save(df, file="filename.rdata") 

そして再びそれをロードします。

load("filename.rdata") 
関連する問題