我想创建一个循环,取"y“中位置1到3的标准差,然后取位置4到6的标准差,依此类推。
这是我到目前为止想出的代码,但是由于新的向量"i“增加了相同的值,所以我被卡住了。
这是一个假设的数据集。
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或其他东西。
发布于 2015-04-23 13:10:39
如果你真的想要一个循环,这里有一种方法:
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.1116502https://stackoverflow.com/questions/29814072
复制相似问题