Re: [問題] 重複組合
不想打十次就用一些取巧的方法...
x = 0:5; d = 10
str = paste(rep("x",d), collapse = ",")
M = eval(parse(text=paste0("expand.grid(", str, ")")))
a = M[rowsum(M)==5, ]
只是這樣的做法有 效能跟記憶體瓶頸
要有更有效率的做法要找package...
不過這種方法在d小的時候非常快XDDD
PS: 取subset可以參考前面幾篇有關data.table的討論
※ 引述《swedrf0112 (M)》之銘言:
: 文章分類提示:問題
: [問題類型]:程式諮詢
: [軟體熟悉度]:入門
: [問題敘述]:
: 想要寫一個重複組合的程式,可以將所有可能的結果列出來
: 例如: 求x+y+z=25的正整數解
: 我能想到的就只有利用3個for及if即可把所有可能全部列出來
: 但我需要的是給定n個x,以及加總的數目,即以下狀況:
: x1+x2+...+xn=k,因此若用for的話會有n個for。
: 使用for及if的程式如下:
: q=0
: result=matrix({0},nrow=351,ncol=3)
: for ( i in 0:25 )
: {
: for ( j in 0:25 )
: {
: for (k in 0:25 )
: {
: if( i+j+k==25 )
: {
: q=q+1
: result[q,]=c(i,j,k)
: }
: }
: }
: }
: 另外一問,有方法將新列出的可能自動加進新列嗎?
: 這樣就不需給定nrow的值了XD
: 謝謝各位!
: [關鍵字]:重複組合
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.224.72
※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1397748306.A.198.html
推
04/17 23:39, , 1F
04/17 23:39, 1F
不客氣XD 這招也是跟版上的大大學的XD
→
04/17 23:55, , 2F
04/17 23:55, 2F
我也喜歡這招XDD 不然要用package之類的有點煩,沒那麼簡單使用....
RAM不夠大就加RAM阿XD
※ 編輯: celestialgod (218.164.224.72), 04/18/2014 00:02:39
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章