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
EDIT これは段階的に行うことができますか? これを使用してデータセットを並べ替えてから計算を行うので、これを段階的に行うことができます。たとえば、最初の 300,000 順列を実行し、計算を適用してから、次の 300,000 順列を実行します。つまり、x 順列を計算します。次に、ループで最初の順列に従ってデータセットの列を並べ替え、計算を行い、2 番目の順列についても同じことを行います。
これを回避する方法を知っていますか?代わりに C コードを使用する価値はありますか? いくつかの例 (例: 1と2 ) を見つけましたが、C がどのように機能するかわかりません。Rで動作させることができません(おそらく、Cコードが何をしているのか理解していないためです)。
Rccp、Rtoolsをインストールし、単純なcppFunctionの例を試してみましたが、うまくいきましたが、文字列の順列をどこにも取得できませんでした(上記のリンクにコードを含めようとすると、 sourceCpp(code でエラーエラーが発生します) = code, env = env, rebuild = rebuild, showOutput = showOutput, : . 正確には、C コードを理解していないため、実行したコードを表示するのはおそらく無意味です (ほとんどの場合、間違っています)。
Rから上記の(または可能であればより良い)Cコードを実行する方法を教えてくれる人はいますか、Rでそれを回避する方法はありますか?
どうもありがとう
注: 順列の数を変更し、文字列から数値に移動したため、これを再投稿しました。また、何をする必要があるかについての詳細も追加しました。