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

Foj*_*sek 30 r

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

product <- function(vec){
    out <- 1
    for(i in 1:length(vec)){
         out <- out*vec[i]
    }
    out
}
Run Code Online (Sandbox Code Playgroud)

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

> product(1:3)
[1] 6
Run Code Online (Sandbox Code Playgroud)

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

rcs*_*rcs 60

你想要prod:

R> prod(1:3)
[1] 6
Run Code Online (Sandbox Code Playgroud)


geo*_*ory 6

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

exp(sum(log(x)))
Run Code Online (Sandbox Code Playgroud)