我在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])
}
}
哪个不对。关于如何解决这个问题的任何想法?
与往常一样,任何帮助都会非常感激。
答案 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