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