我想创建一个循环,该循环采用位置1到3的标准偏差" y"然后采取位置4到6等的标准偏差。
这是我到目前为止提出的代码,但是自从新的矢量"我"增加相同的值。
这是一个假设数据集。
x <-rep(1:10, each =3)
y <- rnorm(30, mean=4,sd=1)
data <- cbind(x,y)
sd.v = NULL
for (i in c(1,4,7,10)){
sd.v[i] <- sd(y[c(i,i+1,i+2)])
}
我对创建循环更感兴趣,而不是使用apply
,sapply
,tapply
或其他内容。
答案 0 :(得分:2)
如果你真的想要一个循环,这是一种方法:
set.seed(42)
y <- rnorm(30, mean=4,sd=1)
sd.y <- as.numeric()
for(i in 1:10){
sd.y[i] <- sd(y[(1+(i-1)*3):(3+(i-1)*3)])
}
sd.y
# [1] 0.9681038 0.3783425 1.1031686 1.1799477 0.6867556 1.6987277
# [7] 1.8859794 1.4993717 1.2956209 1.1116502