看板 R_Language 關於我們 聯絡資訊
nVector = 8 m = sapply(1:(2^nVector-1), function(x) rev(as.logical(intToBits(x)))) m = m[nrow(m)-(nVector-1):0, ] vectorLength = 5 vectors = replicate(nVector, rnorm(vectorLength)) # generating data # 你的資料就簡單把他們都cbind起來就好 vectors = cbind(A, B, .., H) result = apply(m, 2, function(x) rowSums(matrix(vectors[,x], vectorLength))) 如果你要依照和的個數做分組,就把m根據colSums做split就好了 m2 = split(m, t(replicate(nVector, colSums(m)))) m2 = lapply(m2, function(x) matrix(x, nVector)) result = lapply(m2, function(m){ apply(m, 2, function(x){ rowSums(matrix(vectors[,x], vectorLength)) }) }) PS: 這個idea是在MATLAB學到的,想不到R這樣用也很快XD ※ 引述《penolove5566 (輕劃)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 大家好 : 我有多個向量A,B,C,,...,H : 我想要計算向量和,但我要計算所有情況的向量和 : 比如說 A+B, A+C, ... , A+H, B+C, ... , G+H, A+B+C,..., A+B+C+D+E+F+G+H. : 我現在的作法是 : 用 gtools 的 combinations 列出 各種組合數 C7取1 ... C7取7 : 再用這些元素去命令剛剛的向量相加 : 請問有沒有較簡易的做法? : 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1429065467.A.E0F.html ※ 編輯: celestialgod (123.205.27.107), 04/15/2015 11:01:11
penolove5566: 有懂有推,我寫超長一串 哈哈 04/16 15:41
penolove5566: 一開始也是查apply 但那時不知道怎麼用 04/16 15:43
penolove: 樓上偽物 04/16 21:21