【发布时间】:2021-03-08 18:49:42
【问题描述】:
我正在尝试创建一个有效的函数来生成一个大向量的所有单调递增排列。显然,减少 expand.grid 或 gtools::permutations 的输出是可行的,但仅适用于较小的向量。
例子:
x = 1:3
期望的输出:
1, 1, 1
1, 1, 2
1, 1, 3
1, 2, 2
1, 2, 3
1, 3, 3
2, 2, 2
2, 2, 3
2, 3, 3
3, 3, 3
对使用基本 R 或具有此功能的现有软件包有任何建议吗?
编辑:理想的解决方案是避免将完整的排列集生成到子集。
【问题讨论】:
-
您能否调整您的示例所需输出以显示长度为 2 的排列(它们当前都是长度为 3)
-
排列必须是
length(x),但是排列长度的附加参数会有所改进! -
在处理不同长度的向量时,您需要(仔细)考虑如何存储它们。例如,在上面您想要的输出中,是否会显示长度为 2 的向量
1, 2, NA? -
谢谢史蒂夫,根据函数参数,所有输出向量的长度都相同,所以我不确定为什么“NA”填充会成为问题。
-
arrangements包对此很有用,谢谢。
标签: r permutation