首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「R」如何计算几何平均数

「R」如何计算几何平均数

作者头像
王诗翔呀
发布2020-07-03 12:24:22
发布2020-07-03 12:24:22
2.4K00
代码可运行
举报
文章被收录于专栏:优雅R优雅R
运行总次数:0
代码可运行

刚遇到一个有意思的问题,如何用R计算几何平均数。如果数字少,简单,计算很容易,直观上,先用prod函数连乘,然后开方即可。

但我的数值大,连乘几十个之后R结果就是INF了,然后开方就还是INF,算不出来!

聪明人就会动脑筋了,转个弯,先取对数,再指数化!Stackoverflow上的解答让我大开眼界,下面给一个通用的计算函数:

代码语言:javascript
代码运行次数:0
运行
复制
gm_mean = function(x, na.rm=TRUE, zero.propagate = FALSE){
    if(any(x < 0, na.rm = TRUE)){
        return(NaN)
    }
    if(zero.propagate){
        if(any(x == 0, na.rm = TRUE)){
            return(0)
        }
        exp(mean(log(x), na.rm = na.rm))
    } else {
        exp(sum(log(x[x > 0]), na.rm=na.rm) / length(x))
    }
}

最后一个参数指定是否容忍0的存在。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档