2017-11-07 12 views
3

3つの異なるデータフレームで後で読み込むために、異なる次元の3つのデータフレームを1つのCSVに保存するにはどうすればよいですか?1つのCSVから複数のデータフレームを保存してロードする

例えば

write.table(A, file = "di2.csv", row.names = FALSE, col.names = FALSE, sep=',') 
write.table(B, file = "di2.csv", row.names = FALSE, col.names = FALSE, sep=',', append=TRUE) 
write.table(C, file = "di2.csv", row.names = FALSE, col.names = FALSE, sep=',', append=TRUE) 

以上の洗練された方法で

write.csv(rbind(A, B, C), "di2.csv") 

どのように私はこのCSV 3にデータフレーム、A、BおよびCを読み込むことができますか?

+2

どのようにRがどのdata.frameに入れるためにどの行を知っているだろうとの間にいくつかの類似点があることに注意してください?あなたが1つのファイルを書いたので、それを1つのdata.frameに読み込み、必要に応じて分割するのが最も簡単です。それ以外の場合は、ファイルから特定の行を読み込むために 'skip ='と 'nrows ='の組み合わせを使用することができます(しかし、何らかの理由で分割がどこに起こる必要があるかを知る必要があります)。 – MrFlick

+0

後で読み込むために何らかの情報を渡す必要があるのは簡単です。後でそれらを安全にロードできる場合、それらのデータフレームを保存する方法を提案できますか? –

+1

CSV形式である必要がなく、Rに後で再ロードする必要がある場合は、 'save()/ load()'を使って複数のRオブジェクトをファイルに保存します。 – MrFlick

答えて

1

をコメントで述べたように、あなたの目的はただ、あなたがロード/セーブ・使用することができ、後で戻っRにそれらを読み取ることがある場合。

別の簡単な解決策はダンプ/ソースです:あなたが考えることができ

A <- B <- C <- BOD # test input 
dump(c("A", "B", "C")) 

# read back 
source("dumpdata.R") 

他の複数のオブジェクトフォーマットは、HDFと(単一のファイルである)SQLiteデータベースになります。

一方、読み込み可能なテキストであり、Excelで直接読み取り可能で、少なくともcsvファイルに類似していることが重要な場合は、それぞれの後に空白行を付けてデータフレームを1つずつ書き出します。その後、それらを読み戻すには、ファイルを読み、空白行で入力を区切ります。 stおよびenは、チャンクの開始および終了行番号で、Linesです。

A <- B <- C <- BOD # test inputs 

# write data frames to a single file 
con <- file("out.csv", "w") 
for(el in list(A, B, C)) { 
    write.csv(el, con, row.names = FALSE) 
    writeLines("", con) 
} 
close(con) 

# read data.frames from file into a list L 
Lines <- readLines("out.csv") 
en <- which(Lines == "") 
st <- c(1, head(en, -1)) 
L <- Map(function(st, en) read.csv(text = Lines[st:en]), st, en) 

この質問とImporting from CSV from a specified range of values

3

これが私の仕事:

save(A_table, B_table, C_table, file="temp.Rdata") 
load("temp.Rdata") 
関連する問題