为啥 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的 mean 函数更快?
Posted
技术标签:
【中文标题】为啥 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的 mean 函数更快?【英文标题】:Why are `colMeans()` and `rowMeans()` functions faster than using the mean function with `lapply()`?为什么 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的 mean 函数更快? 【发布时间】:2012-09-27 10:01:27 【问题描述】:我想问的是,从算法上讲,rowMeans()
和 colMeans()
函数做了什么来优化速度?
【问题讨论】:
我不认为这是算法问题,我认为这是一个问题,什么可以直接用 C 编码,什么必须通过 R 解释器。 【参考方案1】:此外,请考虑lapply()
的作用。它设置对函数mean()
的重复调用。因此,除了实际计算平均值的开销(在快速 C 代码中完成)之外,lapply()
版本反复产生与mean()
相关的健全性检查代码和方法调度的开销。
rowMeans()
和 colMeans()
在内部只进行一组完整性检查,它们的 C 代码经过优化以循环遍历那里的行/列,而不是通过单独的 R 调用。
【讨论】:
【参考方案2】:rowMeans
和 colMeans
比它们直接调用 C 代码而不是由 R 解释器解释更快。
【讨论】:
rowMeans
和colMeans
之间的速度/效率是否存在差异?谢谢。 (查看了关于so的各种问题,但找不到提及,我是否错过了有关此的相关帖子?)以上是关于为啥 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的 mean 函数更快?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 SQL Server GEOGRAPHY 允许 -15069° 和 +15069° 之间的经度?为啥是±15069°?