既然for循环、apply速度都远不如向量化计算,那么如何去自定义向量化计算,而不是仅仅限制在R中已有的函数?
楼主: 万人往LVR
|
4315
8
[问答] 如何DIY向量化计算去替代循环? |
副教授 82%
-
|
回帖推荐cheetahfly 发表于6楼 查看完整内容 对于第一个问题,确实如此,用C++写的优化后的循环(不考虑C和C++的细微差别),应该只快不慢于最极致的向量化之后的效果。对此,你可以参考一个帖子:《【R】提升R代码运算效率的11个实用方法》(https://bbs.pinggu.org/thread-4405601-1-1.html),仔细看原版的英文贴。
对于第二个问题,恕我不同意该观点,我目前看到的资料,得出的结论是向量化之所以效率高,是因为应用了R语言的底层函数,减少“解释语言”的效率浪费。至 ...
cheetahfly 发表于4楼 查看完整内容 在这个特定的例子中,还算比较好解决的,
rowSums(as.matrix(data)^2)
不过,我猜测你想表达是当某些循环非常难以被向量化时,有什么普遍的原则或特别的技巧能够突破瓶颈,尽最大可能地向量化。
我的观点是,向量化的本质是让程序尽可能地靠近“底层”执行,就是C语言代码。当遇到某些瓶颈,就如大神“Hadley Wickham”在《advanced R》中所提到的“Loops that can’t be easily vectorised because subsequent iteration ...
| ||
| ||
| ||
| ||
京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明 免责及隐私声明