5

フォームのリストがありますlist(c(x1,x2),y,c(z1,z2))。リストの各要素のサブ要素を組み合わせて、次の形式の行列を生成したいと考えています。

[1] x1 y z1

[2] x1 y z2

[3] x2 y z1

[4] x2 y z2

具体例を挙げると、次のようになります。

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

A を受け取り、このコマンドが生成するものと同じように見える出力を生成する関数が必要です。

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

1 に答える 1

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

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

于 2013-01-20T23:47:45.930 に答える