我想以与输入向量相同的频率生成不同的可能排列。例如,我想使用x
下面示例中的向量生成排列。
library(gtools)
x <- c('A','A','B')
permutations(2, 3, x, repeats.allowed = T)
它给出了以下输出。
# [,1] [,2] [,3]
# [1,] "A" "A" "A"
# [2,] "A" "A" "B"
# [3,] "A" "B" "A"
# [4,] "A" "B" "B"
# [5,] "B" "A" "A"
# [6,] "B" "A" "B"
# [7,] "B" "B" "A"
# [8,] "B" "B" "B"
A
但是,我只想要B
频率分别为 2 和 1 的排列。预期的输出是:
# [,1] [,2] [,3]
# [1,] "A" "A" "B"
# [2,] "A" "B" "A"
# [3,] "B" "A" "A"
R中有任何可用的功能吗?
注意:我不想对输出进行后处理以获得预期的输出,因为我的原始输入包含 300 个元素。不建议生成factorial(300)
排列数。
更新:建议的链接提供了一个更快的解决方案,但是当输入向量加倍时失败(例如:)length=20
并显示错误消息:
矩阵中的错误(NA,nrow = N,ncol = prod(sapply(foo,ncol))):
无效的“ncol”值(太大或 NA)