Re: [問題] 多個向量做運算
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
04/16 15:43, 2F
推
04/16 21:21, , 3F
04/16 21:21, 3F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章