繁体   English   中英

如何在 R 中为我的循环创建数据矩阵?

[英]How to create a data matrix for my loop in R?

我有一个 for 循环,它从 Beta 分布中为 j=1, 2, ..., 71 采样一个 theta[j],然后从每个 theta[j] 中获得 100 yrep[k]。 如何将这些数据填充到 71 x 100 的数据矩阵中?

 theta<-NULL
 yrep<-NULL
 test<-NULL
  k=1
 for(i in 1:100){for(j in 1:71){
   theta[j] <- rbeta(1,10+y[j], 20+n[j]-y[j])
  yrep[k]<-rbinom(1, n[j], theta[j])
    k=k+1}
 }
 datatest=data.frame(y)

数据在哪里

  #Data
  y <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
   2,1,5,2,5,3,2,7,7,3,3,2,9,10,4,4,4,4,4,4,4,10,4,4,4,5,11,12,
   5,5,6,5,6,6,6,6,16,15,15,9,4)
  n <- 
   c(20,20,20,20,20,20,20,19,19,19,19,18,18,17,20,20,20,20,19,19,18,18,25,24,
   23,20,20,20,20,20,20,10,49,19,46,27,17,49,47,20,20,13,48,50,20,20,20,20,
   20,20,20,48,19,19,19,22,46,49,20,20,23,19,22,20,20,20,52,46,47,24,14)

你可以用 one-loop 做到这一点:

theta<-NULL
mat <- matrix(nrow = 71, ncol = 100)

for(j in 1:71) {
  theta[j] <- rbeta(1,10+y[j], 20+n[j]-y[j])
  mat[j, ] <- rbinom(100, n[j], theta[j])
}

dim(mat)
#[1]  71 100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM