R:如何将变量用于向量索引?
我是R的新用户,试图用正弦函数生成一个k-移动平均图,其中包含随机数(范围[-0.5,+0.5])噪声。 所以我要做的是计算带噪正弦向量中连续(2*k+1)元素的平均值,但是,下面有“帮助”的代码,它没有像我预期的那样工作…:( 代码似乎是计算第1到(i-k)个元素的平均值。 怎么了?救命啊R:如何将变量用于向量索引?,r,variables,indexing,R,Variables,Indexing,我是R的新用户,试图用正弦函数生成一个k-移动平均图,其中包含随机数(范围[-0.5,+0.5])噪声。 所以我要做的是计算带噪正弦向量中连续(2*k+1)元素的平均值,但是,下面有“帮助”的代码,它没有像我预期的那样工作…:( 代码似乎是计算第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 &
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
}
set.seed(1)
x=序列(0,2*pi,pi/50)
sin_graph目前,它是从i
中减去k:i
的向量,然后添加k
:
比数学运算符更具先例。使用括号(见下面的代码),它计算i-k
和i+k
并创建一个向量,其中min和max作为计算结果。我得到另一个平滑函数
MA_vector[i] <- mean(sin_noise[(i-k):(i+k)])
MA_vector[i]可能带有as.numeric(i-k):as.numeric(i+k)。此外,可能函数rollaply会对您有所帮助。@Wave非常感谢您的帮助!:-)