簡體   English   中英

雙循環隨機采樣

[英]Double loop with random sampling

我想用頻率j生成分數i (0:36) 我希望j循環是隨機數。 我所做的是:

j<-1:70
for(i in 0:36) {
  for (j in 1:sample(j)) {
    print(i,j)
  }
}

但是我出錯了。 我應該把sample(j,1, replacement=TRUE)而不是sample(j)放嗎? 謝謝

如果我理解正確,則希望將i每個元素復制1到70次(隨機選擇要復制值的次數)。

i <- 0:36
j <- 1:70

#number of times to replicate each i
times <- sample(j, length(i), replace=FALSE)
result <- rep(i, times)

是否使用replace = FALSE取決於您希望如何進行采樣(例如,replace = FALSE確保每個j最多被選擇一次。

如果您想要一個隨機數,則應使用runif 它具有最小/最大來控制范圍。 您也可以使用sample ,但是最好使用sample.int(max, 1)

j<-70
for(i in 0:36) {
  for (k in 1:runif(1,1,j)) {
    cat(i,k, "\n")
  }
}

然后,內部循環不應覆蓋j (應為常數)-因此我將循環變量重命名為k ...並且print不會那樣打印多個args-但是cat可以!

嘗試

for(i in 0:36) {
  for(k in 1:sample(70, 1)) {
    print(c(i,k))
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM