【问题标题】:multiplying all elements of a vector in R将R中向量的所有元素相乘
【发布时间】:2010-06-21 18:00:48
【问题描述】:

我想要一个函数返回向量中所有值的乘积,例如sum,但使用乘法而不是加法。我希望它已经存在,但如果它存在,我找不到它。这是我的解决方案:

product <- function(vec){
    out <- 1
    for(i in 1:length(vec)){
         out <- out*vec[i]
    }
    out
}

这符合我想要的方式。例如:

> product(1:3)
[1] 6

是否有更好的方法来做到这一点,无论是使用现有功能还是通过改进此自定义功能?

【问题讨论】:

标签: r


【解决方案1】:

你想要prod:

R> prod(1:3)
[1] 6

【讨论】:

  • prod(1:171) 达到了我的极限!
  • 发现这种功能永远不会太迟:'D
【解决方案2】:

如果您的数据都大于零,这是一个更安全的解决方案,不会导致计算溢出:

exp(sum(log(x)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多