我是R的新用户,并尝试生成具有正弦函数的k-移动平均图,其中涉及随机数(范围[-0.5,+ 0.5])噪声。 所以我要做的是计算噪声正弦向量中连续(2 * k + 1)个元素的平均值,但是,使用" HELP"下面,它没有像我预期的那样...... :( 代码似乎计算1到(i-k)元素的平均值。 它有什么问题?求救!
set.seed(1)
x = seq(0,2*pi,pi/50)
sin_graph <- sin(x)
noise <- runif(101, -0.5, 0.5)
sin_noise <- sin_graph + noise
plot(x,sin_noise, ylim=c(-2,2))
lines(x,sin_graph, col="red")
k<-1
MA<-0
while (k<=1){
i <- k+1
MA_vector <- rep(NA, times=101)
while (i<=101-k){
MA_vector[i] <- mean(sin_noise[i-k:i+k]) #HELP!
i <- i+1
}
print(MA_vector)
plot(x, MA_vector, ylim=c(-2,2))
lines(x,sin_graph, col="red")
k<-k+1
}
答案 0 :(得分:1)
目前,它从k:i
减去i
的向量,然后添加k
。 :
优先于数学运算符。通过使用括号(参见下面的代码),它评估i-k
和i+k
并创建一个带有min和max的向量作为评估结果。我得到另一个平滑的功能。
MA_vector[i] <- mean(sin_noise[(i-k):(i+k)])