簡體   English   中英

如果在R中的其他內部循環

[英]If Else Inside For Loop in R

我需要在R中的for循環中間創建一個if / else語句。

我試圖用R中的3-3設計創建一個假設的1期臨床試驗。我從sample1〜binomial(3,x / 10)開始,x從1開始。如果sample1 = 0,則將x增加1並再次取樣。 當sample1> 0時,以相同的x值獲取第二個樣本sample2〜binomial(3,x / 10)。 如果sample2 = 0,則增加x,然后再次獲取sample1。 如果sample2> 0,則打印該x值。 我想做10次,看看x值是多少。 下面是我的代碼。

reps <- 10
MTD <- numeric(reps)
for (i in 1:reps) {
  x <- 1
  sample1 <- rbinom(1, 3, x/10)
  if (sample1>0) {sample2 <- rbinom(1,3, x/10)
  if (sample2>0) {MTD[i] <- (x)} else x<- x+1}
  else x <-x+1
  }
MTD

看結果,我得到的都是零,所以有些不對勁。 有人可以幫忙。 謝謝。

也許這就是您想要的:

reps <- 10
MTD <- numeric(reps)
x <- 1
i = 1
while (i < reps) {

    sample1 <- rbinom(1, 3, x/10)
    if (sample1>0) {
        sample2 <- rbinom(1,3, x/10)
        if (sample2>0) {
            MTD[i] <- (x)
            i = i+1
            x = 1
        } else {
            x <- x+1
        }
    } else {
        x <- x+1
    }
}
MTD

這些變化對每個i而言,您將繼續獲取sample1和sample2,直到sample1> 0和sample2> 0。 只有這樣,循環才會變為i + 1,x重置為1。

MTD <- as.numeric(10)
sapply(seq(MTD), function(i)
    {
    sample1 <- sample2 <- rbinom(1, 3, i/10)
    if(sample1>0){
        sample2 <- sample1
    }else{
        sample2 <- i+1
    }
    if(sample2>0){
        sample2 <- sample1
    }else{
        sample2 <- i+1
    }
})

好吧,我將sample1和sample2拆分為獨立的參數,以使其與眾不同,如下所示。

MTD <- as.numeric(10)
sapply(seq(MTD), function(i)
    {
    sample1 <- rbinom(1, 3, i/10)
    sample2 <- rbinom(1, 3, i/10)
    if(sample1>0){
        sample2 <- sample1
    }else{
        sample2 <- i+1
    }
    if(sample2>0){
        res <- sample1
    }else{
        res <- i+1
    }; return(res)
})

這是您想要的結果嗎?

暫無
暫無

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

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