将R中向量的所有元素相乘

时间:2010-06-21 18:00:49

标签: r

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

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

这表现我想要的方式。例如:

> product(1:3)
[1] 6

是否有更好的方法可以使用现有功能或通过改进此自定义功能?

2 个答案:

答案 0 :(得分:56)

您想要prod

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

答案 1 :(得分:2)

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

exp(sum(log(x)))