如何根据你想在R中计算向量的多少项来进行累积和逆平方加权?

  • 本文关键字:方加权 加权 何根 多少 向量 计算 r
  • 更新时间 :
  • 英文 :


假设我有一个长度为10的向量

vec <- c(10,9,8,7,6,5,4,3,2,1)

,我想创建一个函数,它接受一个子集长度值(比如3),并计算到该长度的平方逆。我想计算:

10+(9/(2^2))+(8/(3^2))

也就是

vec[1]+(vec[2]/(2^2))+(vec[3]/(3^2))

,但有一个函数可以接受子集长度的输入。

我能想到的唯一解决方案是for循环,在R中有更快更优雅的解决方案吗?

是的,您可以使用R中的大多数操作都是矢量化的这一事实来完成此操作,而无需循环:

vec <- c(10,9,8,7,6,5,4,3,2,1)
cum_inverse_square  <- function(vec, n) {
sum(vec[1:n] / (1:n)^2)
}
cum_inverse_square(vec, 3) == 10+(9/(2^2))+(8/(3^2)) # TRUE

最新更新