2011-08-05 6 views
2

不等長のデータフレームを保存することについて質問があります。可変長のテーブルをNAを導入することなく保存する方法はありますか?ここでNAの例がありますが、それは私が保存したいものではありません。NAを導入せずに不等長のデータを保存する

x <- list(matrix(c(1,4,3,2), ncol = 2,     
dimnames = list(c("A","B"), NULL)),    
matrix(c(23,9,4,4,22,54), ncol = 2,     
dimnames = list(c("C","D","E"), NULL))) 

out <- lapply(x, rownames) 
foo <- function(x, max, repl = NA) {  
if(length(x) == max)   
out <- x  
else {   
out <- rep(repl, max)   
out[seq_along(x)] <- x  
}  
out 
} 
out <- lapply(out, foo, max = max(sapply(out, length))) 
(out <- do.call(rbind, out)) 

データフレームは、長方形である必要があり

答えて

3

私はリストを作成し、writeを使ってファイルに書き込みます。他の可能性もあります(?writeのヘルプファイルを参照してください)。

myl <- list(a = letters[1:10], b = 1:3, c = "kaplah") #create some data 

# for every element in the list (`myl`), write that element to a file 
# and append if necessary. also, if list element is a character, write 
# to as many columns as there are characters. 
lapply(X = myl, FUN = function(x) { 
    write(x, append = T, file = "test.txt", ncolumns = length(x)) 
}) 

結果は、それがデータフレームである必要はありません

a b c d e f g h i j 
1 2 3 
kaplah 
2

ありがとうございます。可変長データを格納する場合は、リストを使用する必要があります。

あなたのデータについて、データフレームに保存したいのはどういう意味ですか?

+0

ですが、私は不平等な行を持つテーブルを保存する必要があります。それは可能ですか? – Lisann

+0

@Lisann、リスト(各要素は一度に1つずつ)をファイルに書くことができます( '?write'、' append = TRUE'を参照)。 –

+0

@Romanあなたは例を書くことができますか?私はあなたが正確に何を意味するのか分からないので..答えをありがとう – Lisann

関連する問題