我需要计算 R 中从 1 到 15 的 15 个数字的排列。
library(combinat)
#With 1 to 3
permn(3)
#With 1 to 10
options(max.print=factorial(10))
permn(10)
考虑到 permn(10) 上面的代码的排列量,只需要 5 分钟,就可以满足我的需要(但我对速度并不感兴趣)。
但是,我需要使用 15 个数字(1 到 15)来执行此操作。不幸的是,当我尝试时 R 返回错误:
permn(15)
Error in vector("list", gamma(n + 1)) :
vector size specified is too large
编辑 这可以分阶段完成吗? 我正在使用它来重新排序数据集,然后进行一些计算,所以我可以分阶段进行,例如执行前 300,000 个排列,应用计算,然后执行接下来的 300,000 个排列等。换句话说,计算 x 个排列然后在循环中根据第一个排列重新排序数据集列,进行一些计算,然后对第二个排列执行相同的操作等。
你知道解决这个问题的任何方法吗?是否值得使用一些 C 代码来代替?我找到了几个例子(例如1和2),但我不知道 C 是如何工作的。我无法让它与 R 一起使用(可能是因为我不明白 C 代码在做什么)。
我已经安装了 Rccp、Rtools 并尝试了简单的 cppFunction 示例,它们工作正常,但是我没有得到任何字符串排列的结果(当我尝试在上面的链接中包含代码时,我得到了 sourceCpp 中的错误错误(代码= code, env = env, rebuild = rebuild, showOutput = showOutput, :). 正是因为我不懂 C 代码,所以向您展示我运行的代码可能毫无意义(很可能是错误的)。
有人会告诉我如何从 R 中运行上述(或者如果可能的话更好)C 代码,或者你有什么办法在 R 中解决它吗?
非常感谢
注意:我重新发布了这个,因为我更改了排列的数量并从字符串移动到数字。我还添加了一些关于我需要做什么的细节。