为啥 `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】:

rowMeanscolMeans 比它们直接调用 C 代码而不是由 R 解释器解释更快。

【讨论】:

rowMeanscolMeans 之间的速度/效率是否存在差异?谢谢。 (查看了关于so的各种问题,但找不到提及,我是否错过了有关此的相关帖子?)

以上是关于为啥 `colMeans()` 和 `rowMeans()` 函数比使用带有 `lapply()` 的 mean 函数更快?的主要内容,如果未能解决你的问题,请参考以下文章

不同列的总数

R解决:系统完全是奇异的

R中跨列的条件均值

R语言-均值合并多个探针对应一个基因

R语言初级教程(15): 矩阵(下篇)

为啥 SQL Server GEOGRAPHY 允许 -15069° 和 +15069° 之间的经度?为啥是±15069°?