PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
R_Language
[問題] list 元素加總,如何不用loop做到
作者:
a78998042a
(Benjimine)
2015-01-15 16:17:18
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]
想使用apply類型的函數將list內的元素加總,而不使用for loop
[程式範例]:
mat=matrix(1:4,2,2)
mat.list=list(mat,mat,mat)
想加總成單一的矩陣
結構為:matrix(c(3,6,9,12),2,2)
有人知道不用loop的情況可以怎麼做嗎?
謝謝
作者:
koai
(可笑的自以為...)
2015-01-15 16:18:00
試試看 ?sapply
作者: obarisk (OSWALT)
2015-01-15 17:38:00
do.call
作者:
celestialgod
(天)
2015-01-15 18:14:00
apply(mat. list, 1:2, sum)Reduce也可以,只是do.call最有效率
作者: raysonic
2015-01-15 18:44:00
Reduce('+' , mat.list)
作者: obarisk (OSWALT)
2015-01-15 21:49:00
do.call好像不能用`+`,還是先用Reduce吧Orz要指定`+`.__C__matrix,但是這個我試不出來
作者:
memphis
(讓你喜歡這世界~)
2015-01-15 22:07:00
如果list中的matrix大小一樣 建議你這樣做matrix(rowSums(matrix(unlist(mat.list), nrow=4)), nrow=2)
作者:
a78998042a
(Benjimine)
2015-01-16 02:46:00
謝謝!!!學習了
作者: clickhere (It's time to go home.)
2015-01-16 05:48:00
do.call(.Primitive("+"), mat.list)
作者: obarisk (OSWALT)
2015-01-16 09:26:00
apply和 for的效能應該沒差多少for 要用 compiler,不過我太曉得目前jit的情況如果要超過小時的code,還是推RCpp吧
作者: yanchenglin (LIN)
2015-01-16 18:47:00
推Rcpp, RcppArmadillo.還有若是你每次迴圈或是模擬都是獨立的,平行運算也很快.Rcpp+平行運算直接逆天!!簡單說,模擬K次,K次間都獨立,可以分散到N個CPU平行~~
作者:
Edster
(Edster)
2015-01-17 15:31:00
為什麼不用array?mat.array = array(mat, 1:3) # 可能是吧, 隨意寫.sum(mat.array[,,1:3])你的每個list維度都一樣, 用array比較簡單吧.
作者:
celestialgod
(天)
2015-01-17 19:44:00
我回錯了...apply那個只能用到3維陣列...
繼續閱讀
Re: [問題] 中文顯示
psinqoo
Re: [問題] 擷取data.frame中的特定資料
Wush978
[問題] 擷取data.frame中的特定資料
ToastCheng
[問題] t(x) 跑出向量 轉秩後的問題
psinqoo
Re: [問題] 很基礎的for問題(loop)
Wush978
[問題] 很基礎的for問題(loop)
hyposoda
[問題] grep in R
psinqoo
Re: [問題] 連續變數命名、運算
Wush978
[問題] 連續變數命名、運算
ntme
[問題] 中文顯示
e002311
Links
booklink
Contact Us: admin [ a t ] ucptt.com