合并R中的列表元素

use*_*809 5 combinations r list

我有一份表格清单list(c(x1,x2),y,c(z1,z2)).我想组合列表中每个元素的子元素以生成以下形式的矩阵:

[1] x1 y z1

[2] x1 y z2

[3] x2 y z1

[4] x2 y z2
Run Code Online (Sandbox Code Playgroud)

举一个具体的例子,给出:

A = list(c(1,4),2,3,c(1,4))
Run Code Online (Sandbox Code Playgroud)

我想要一个函数,它将获取A并产生一个与该命令产生的输出相同的输出:

t(matrix(c(c(1,2,3,1),1:4,c(4,2,3,1),c(4,2,3,4)),ncol=4))
Run Code Online (Sandbox Code Playgroud)

flo*_*del 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
Run Code Online (Sandbox Code Playgroud)

如果订单真的很重要,你可以这样做:

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
Run Code Online (Sandbox Code Playgroud)

并可能重命名列.