在 R 中创建 k 个向量的笛卡尔积

Create a cartesian product of k vectors in R

假设我有一个向量,我想创建 k 个相同向量的笛卡尔积,我如何在 R 中实现它。

就像,我的向量是

m
[1] 1 2

且 k 为 3,

如何得到像 3 m 的笛卡尔积这样的结果。

笛卡尔积在 R 中实现为 outer,或其中缀版本 %o%。因此:

m %o% m %o% m

# , , 1
# 
#      [,1] [,2]
# [1,]    1    2
# [2,]    2    4
# 
# , , 2
# 
#      [,1] [,2]
# [1,]    2    4
# [2,]    4    8

或更容易扩展的形式,

Reduce(outer, rep(list(m), 3))

哪个returns一样。