2013-01-20 19 views
5

list(c(x1,x2),y,c(z1,z2))という形式のリストがあります。 私は、フォームの 行列を生成するために、リストの各要素のサブ要素を組み合わせたい:私が好きなリスト要素を結合するR

A = list(c(1,4),2,3,c(1,4)) 

を:与えられ、具体的な例を与えるために

[1] x1 y z1 

[2] x1 y z2 

[3] x2 y z1 

[4] x2 y z2 

をAを取ると、このコマンドが生成されるものと同じに見える出力を生成する関数:

t(matrix(c(c(1,2,3,1),1:4,c(4,2,3,1),c(4,2,3,4)),ncol=4)) 

答えて

11

使用expand.grid

expand.grid(A) 
# Var1 Var2 Var3 Var4 
# 1 1 2 3 1 
# 2 4 2 3 1 
# 3 1 2 3 4 
# 4 4 2 3 4 
と順序が本当に重要ならば、あなたのような何かを行うことができます。

rev(expand.grid(rev(A))) 
# Var4 Var3 Var2 Var1 
# 1 1 2 3 1 
# 2 1 2 3 4 
# 3 4 2 3 1 
# 4 4 2 3 4 

を、おそらく列の名前を変更します。

+0

これはまさに私が探していたものです。どうもありがとう! – user1643809

関連する問題