【问题标题】:Standard Deviation Loop in RR中的标准偏差循环
【发布时间】:2023-03-29 20:30:01
【问题描述】:

我想创建一个循环,取“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)])
}

我真的对创建循环更感兴趣,而不是使用 applysapplytapply 或其他东西。

【问题讨论】:

  • sapply(seq(1,10,3), function(u) sd(y[u:(u+2)])) 有什么问题?

标签: r for-loop


【解决方案1】:

如果你真的想要一个循环,这里有一个方法:

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

【讨论】:

  • 比我想象的要容易得多。
猜你喜欢
  • 2022-11-27
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多