如何在R中设置乘法(笛卡尔积)

时间:2017-03-03 06:32:37

标签: r list vector set

我知道向量可以表示n元组,向量列表可以表示一组n元组。一个简单的算法就是

AxB<-list();k<-1L
for(i in seq_along(A))for(j in seq_along(B)){AxB[[k]]<-c(A[[i]],B[[j]]);k<-k+1L}
是否有更优雅的数据结构和算法来实现这一目标?

2 个答案:

答案 0 :(得分:3)

Giva尝试expand.grid功能:

a<-list(1,2,6,3)
b<-list("a", "b", "c")
expand.grid(a,b)

您的输出将是:

   Var1 Var2
1     1    a
2     2    a
3     6    a
4     3    a
5     1    b
6     2    b
7     6    b
8     3    b
9     1    c
10    2    c
11    6    c
12    3    c

还要查看outer函数。但在这种情况下,您的变量必须是矢量或数组。

答案 1 :(得分:1)

我们可以使用CJ

中的data.table
library(data.table)
CJ(a, b)

数据

a <- c(1,2,6,3)
b <- c("a", "b", "c")