【问题标题】:A loop fills in only one vector of the ones I included in the for一个循环只填充我包含在 for 中的一个向量
【发布时间】:2019-05-04 19:26:47
【问题描述】:

我包括一些上下文。我的问题在于。当我运行它时,只有向量 intL 被填充,但 intU 不会发生这种情况。另一方面,如果我运行一个单独的 for,一个用于 intL,一个用于 intU,我会将两个向量都填满。我的问题是,为什么当我用 for 填充两个向量时,只填充了 intL 向量,而没有填充另一个?

X<-replicate(1000,rnorm(n=10,mean=-1.2, sd=0.04))

Xbar<-c()

for(i in 1:1000){
  sumX<-(1/10)*sum(X[,i])
  Xbar[i]<-sumX
}

Xbar

intL<-c()
intU<-c()

for(i in 1:1000){
 intL[i]<-Xbar[i]-1.645*(.04/sqrt(10)) 
 intU[i]<Xbar[i]+1.645*(.04/sqrt(10))
}

【问题讨论】:

  • 旁注:一行你有sumX &lt;- ...,在下一行你有Xbar[i] &lt;- sumX,你不要在其他任何地方使用sumX。还不如只做Xbar[i] &lt;- (1/10) * sum(X[, i]) 并保存一行......但当然你可以完全跳过循环并使用Xbar &lt;- colSums(X) / 10Xbar &lt;- colMeans(X)

标签: r loops vector


【解决方案1】:

问题是&lt;

intU[i]<Xbar[i]+1.645*(.04/sqrt(10))

应该是&lt;-

intU[i]<- Xbar[i]+1.645*(.04/sqrt(10))

用更正的版本再次运行代码

intL<-c()
intU<-c()

for(i in 1:1000){
   intL[i] <- Xbar[i]-1.645*(.04/sqrt(10)) 
   intU[i] <- Xbar[i]+1.645*(.04/sqrt(10))

 }

length(intU)
#[1] 1000
length(intL)
#[1] 1000

&lt;是比较运算符,它只是检查'intU[i]'(它被初始化为NULL)是否小于计算值,而&lt;-是赋值运算符

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-09-14
    • 2011-01-30
    相关资源
    最近更新 更多