Re: [問題] 重複組合

看板R_Language作者 (攸藍)時間10年前 (2014/04/17 23:25), 10年前編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
不想打十次就用一些取巧的方法... 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
感謝你~~ 又學到一招了XD
04/17 23:39, 1F
不客氣XD 這招也是跟版上的大大學的XD

04/17 23:55, , 2F
我也覺得用prase就好了,管它cpu ram夠不夠力。 XD
04/17 23:55, 2F
我也喜歡這招XDD 不然要用package之類的有點煩,沒那麼簡單使用.... RAM不夠大就加RAM阿XD ※ 編輯: celestialgod (218.164.224.72), 04/18/2014 00:02:39
文章代碼(AID): #1JJ_9I6O (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1JJ_9I6O (R_Language)