当 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
我的公式存在数学语法问题。
我的意图是对 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