2015-04-23 94 views
0

我想创建一个循环,在“Y”所采用的通过3个位置1的标准偏差,然后通过6等需要位置4的标准偏差标准偏差环路

这是我的代码我想出了迄今为止,但是自从新矢量“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)]) 
} 

我真的在创造一个循环,而不是使用applysapplytapply或别的东西更如此感兴趣。

+1

这有什么错'sapply(SEQ(1,10,3),功能(U)SD(Y [U:(U + 2)]))'? –

+0

什么都没有........ – ComputerNoob

回答

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 
+0

谢谢。非常酷 – ComputerNoob

+0

比我在脑海中制作要容易得多。 – ComputerNoob