R中求和的通用代码

时间:2015-11-16 19:00:14

标签: r sum

我在R中编写了一些代码,我遇到了以下问题: 基本上,我想计算变量X[k],其中X采用每个k的值,如下所示:

其中A是一个已知变量,它为每个索引采用不同的值。

目前,我有这样的事情:

k <- NULL
X <- NULL
z<- 1: n
for (k in seq(along =z)){
for (j in seq (along = 1:k)){
  X[k] = 1/k*sum(A[n-k]/A[n-j+1])
 }
 }

哪个不对。关于如何解决这个问题的任何想法?

与往常一样,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

试试这个

# define A
A <- c(1,2,3,4)
n <- length(A)
z <- 1:n
#predefine X (don't worry, all values will be overwritten, but it will have the same length as A
X <- A  
for(k in z){
  for(j in 1:k){
    X[k] = 1/k*sum(A[n-k]/A[n-j+1])
  }
}

您不需要定义z,它只在for中使用。在这种情况下,请执行for(k in 1:n){

答案 1 :(得分:1)

作为

您可以执行以下操作

set.seed(42)
A <- rnorm(10)
k <- sample(length(A), 4)

calc_x <- function(A, k){
  n <- length(A)
  c_sum <- cumsum(1/rev(A)[1:max(k)])
  A[n-k]/k * c_sum[k]
}

calc_x(A,k)

返回什么:

[1]  0.07775603  2.35789999 -0.45393983  0.13323284