【发布时间】:2020-04-15 14:26:15
【问题描述】:
我想在 R 中生成任意集合的笛卡尔幂。 例如,在 Python 中,我会采用以下方式:
from itertools import product
c = [1, 2, 3]
n = 2
l = list(product(c, repeat=n))
这会产生以下输出。
[(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)]
我对 R 很陌生,所以我想知道是否有一个内置函数可以用来实现这一点。请注意,我对提高功率(Python 中的重复参数)特别感兴趣。
【问题讨论】:
-
do.call("expand.grid", rep(list(1:3), 2))给出了问题中显示的输出。 rdocumentation.org/packages/rje/versions/1.10.10/topics/… 提供电源组。t(combn(1:3, 2))给出长度为 2 的独特组合。 -
不会
expand.grid(1:3,1:3)达到基本相同的结果吗? -
@G.Grothendieck expand.grid 函数不足以处理任意集合,例如 c(1, 3, 7)。有解决办法吗?
-
@Base_R_Best_R 我想明确控制为任意集合计算产品的次数。所以这也意味着例如 expand.grid(c(1,4,9), c(1,4,9), c(1,4,9)) 。我正在寻找一个带有参数 n 的函数,它指定计算产品的次数。
标签: r algorithm set cartesian-product