乘以R中向量的所有元素

乘以R中向量的所有元素,r,R,我想要一个函数返回向量中所有值的乘积,比如sum,但是用乘法而不是加法。我以为这已经存在了,但如果真的存在,我就找不到了。以下是我的解决方案: product <- function(vec){ out <- 1 for(i in 1:length(vec)){ out <- out*vec[i] } out } 有没有更好的方法来实现这一点,或者是使用现有的函数,或者是通过改进此自定义函数?您想要prod: R> pr

我想要一个函数返回向量中所有值的乘积,比如
sum
,但是用乘法而不是加法。我以为这已经存在了,但如果真的存在,我就找不到了。以下是我的解决方案:

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

有没有更好的方法来实现这一点,或者是使用现有的函数,或者是通过改进此自定义函数?

您想要
prod

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

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

exp(sum(log(x)))

rcs首先回答了这个问题,所以我删除了我的帖子。强烈建议打印出R参考卡。你可以在这里找到:
prod(1:171)
达到了我的极限!发现这种功能永远不会太迟:'D
exp(sum(log(x)))