如何在R中进行集合乘法(笛卡尔积)

elf*_*yao 2 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}
Run Code Online (Sandbox Code Playgroud) 是否有更优雅的数据结构和算法来实现这一点?

san*_*4ka 5

Giva 尝试一下expand.grid功能:

a<-list(1,2,6,3)
b<-list("a", "b", "c")
expand.grid(a,b)
Run Code Online (Sandbox Code Playgroud)

你的输出将是:

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

还有看outer功能。但在这种情况下,您的变量必须是向量或数组。