2012-11-26 16 views
5

にリストを変換します。リストのオブジェクトは、ベクトル - 1次元のオブジェクトのみです。は私はこのようなリストを持っている1つの行data.frame

私はこのような1つの行data.frameにリストを変換する手順を作りたい:

> data.frame(code = "a", n.1 = 10, n.2 = 10, n.3 = 10) 
    code n.1 n.2 n.3 
1 a 10 10 10 

私は現在、このソリューションを持っている:

bはほとんど結果である
a <- stack(arg0) 
b <- data.frame(t(a[,1])) 
names(b) <- a[,2] 
b <- data.frame(b) 

達成したい:

> b 
    code n n.1 n.2 
1 a 10 10 10 

2つの質問:

  1. 結果を達成するためのよりエレガントな方法はありますか?
  2. c(n.1, n.2, n.3)のような重複した列名の番号付けを取得する方法はありますか?

答えて

4

リストのオブジェクトの異なるデータ型を維持したい場合は、次のコマンドを使用することができます。

data.frame(lapply(arg0, function(x) t(data.frame(x)))) 

出力:

code n.1 n.2 n.3 
x a 10 10 10 

値i n列2〜4はまだ数値です。

+0

データ型を保持するために受け入れられました。追加機能は質問では尋ねませんでしたが、私はそれについて考えていました。オブジェクトの命名がRでどのように構成されているかは私には驚きです。これらの2つの例では、異なる行名が同じ結果に割り当てられています: 'foo < - function(x)t(data.frame(x)); foo(arg0 [[1]]) 'と' t(data.frame(arg0 [[1]])) 'となります。また、 'lapply'が引数リストからオブジェクト名を保持することも知らなかった。答えを教えてくれてありがとう! – djhurio

4

write.tableread.tableの組み合わせは、転記された非公開データに使用できます。私はテーブルを保持するための中間ステップとしてクリップボードを使用しています。

write.table(t(unlist(arg0)),"clipboard") 
read.table("clipboard") 
    code n1 n2 n3 
1 a 10 10 10 
+0

自然なデータ型を取得するための+1 –

9

これは、1つの方法です:

data.frame(t(unlist(arg0))) 
# code n1 n2 n3 
# 1 a 10 10 10 
関連する問題