2013-01-20 53 views
5

我有一個形式列表list(c(x1,x2),y,c(z1,z2))。 我想到列表中的每個元素的子元素相結合,產生 以下形式的矩陣:給定結合列表元素在R

[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)) 

我想

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:將採取A和產生的輸出,看起來相同的是什麼這個命令會產生一個功能

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