将向量中除第 i 个元素之外的所有元素相加而不 for-loop
Sum all elements in a vector except the ith element without for-loop
正如标题所说。我有一个向量,我想对向量中除第 i 个元素之外的所有元素求和。我可以用 for-loop 实现这一点,例如
# vector to iterate over
v1 <- 1:5
# somewhere to store results
v2 <- c()
for (i in seq_along(v1)) {
v2[i] <- sum(v1[-i])
}
# desired output
v2
[1] 14 13 12 11 10
我正在寻找性能提升,是否可以通过矢量化在没有 for-loop
的情况下实现 v2
?
这可以在没有循环的情况下使用:
sum(v1) - v1
这将为 v1
的所有元素提供不包括该元素的所有 v1
的总和。由于它是一种矢量化方法,因此它比循环更快。 https://www.noamross.net/archives/2014-04-16-vectorization-in-r-why/
正如标题所说。我有一个向量,我想对向量中除第 i 个元素之外的所有元素求和。我可以用 for-loop 实现这一点,例如
# vector to iterate over
v1 <- 1:5
# somewhere to store results
v2 <- c()
for (i in seq_along(v1)) {
v2[i] <- sum(v1[-i])
}
# desired output
v2
[1] 14 13 12 11 10
我正在寻找性能提升,是否可以通过矢量化在没有 for-loop
的情况下实现 v2
?
这可以在没有循环的情况下使用:
sum(v1) - v1
这将为 v1
的所有元素提供不包括该元素的所有 v1
的总和。由于它是一种矢量化方法,因此它比循环更快。 https://www.noamross.net/archives/2014-04-16-vectorization-in-r-why/