Re: [問題] 多個向量做運算

看板R_Language作者 (攸藍)時間9年前 (2015/04/15 10:37), 9年前編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
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

04/16 15:41, , 1F
有懂有推,我寫超長一串 哈哈
04/16 15:41, 1F

04/16 15:43, , 2F
一開始也是查apply 但那時不知道怎麼用
04/16 15:43, 2F

04/16 21:21, , 3F
樓上偽物
04/16 21:21, 3F
文章代碼(AID): #1LBSxxuF (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1LBSxxuF (R_Language)