当 sum() 项中有 prod() 项时,如何构建 index/subscript 条件?

How can I build in an index/subscript condition when having a prod() term in a sum() term?

我的公式存在数学语法问题。

我的意图是对 j 施加一个条件,以便 prod() 仅在除 i 之外的所有 j 上计算。

示例代码

v1 = c(1:3)
sum(sapply(seq_along(v1), function(i) 
  i * prod(sapply(seq_along(v1), function(j) 
    v1[j]*2))))    

在哪里以及如何写这个?

试试这个:

v1 <- 1:3
sum(sapply(seq_along(v1), function(i) i * prod(2 * v1[-i])))

如果 v1 真的只是 1:3,您可以简单地使用 v1 而不是 seq_along(v1)

这里的想法是可以使用负索引从向量中排除 元素。因此,v1[-i]v1 删除了第 i 个元素。

请注意,R 可以对整个向量进行算术运算。因此,您可以只写 2 * v1.

而不是 sapply(seq_along(v1), function(j) 2 * v1[j])

还有一个选择

library(matrixStats)
sum(seq_along(v1)*colProds(2*matrix(v1, nrow=4, ncol=3)[-c(1,4),]))
#[1] 72