我有一个表单列表 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))
最佳答案
使用 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
并可能重命名列。
关于r - 组合 R 中的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14430671/