If statement If-Else逻辑流
有人能向我解释一下为什么要发布此代码:If statement If-Else逻辑流,if-statement,logic,pseudocode,If Statement,Logic,Pseudocode,有人能向我解释一下为什么要发布此代码: InfectionHistory <- rep(1,100) for(x in 1:99) { r <- runif(1) print(r) if(InfectionHistory[x]==1) { if(r < 0.04) { InfectionHistory[x+1] <- 2 } else { InfectionHistory[x+1] <-
InfectionHistory <- rep(1,100)
for(x in 1:99)
{
r <- runif(1)
print(r)
if(InfectionHistory[x]==1)
{
if(r < 0.04)
{
InfectionHistory[x+1] <- 2
}
else
{
InfectionHistory[x+1] <- InfectionHistory[x]
}
}
if(InfectionHistory[x]==2)
{
if(r < 0.11)
{
InfectionHistory[x+1] <- 1
}
else
{
InfectionHistory[x+1] <- InfectionHistory[x]
}
}
}
plot(InfectionHistory, xlab = "Day", ylab = "State", main = "Patient Status per Day", type = "o")
InfectionHistory <- rep(1,100)
for(x in 1:99)
{
r <- runif(1)
print(r)
if((InfectionHistory[x]==1)&&(r < 0.04))
{
InfectionHistory[x+1] <- 2
}
if((InfectionHistory[x]==2)&&(r < 0.11))
{
InfectionHistory[x+1] <- 1
}
}
plot(InfectionHistory, xlab = "Day", ylab = "State", main = "Patient Status per Day", type = "o")
InfectionHistory第一个示例包含嵌套在if
语句中的if-else
对
第二个示例包含带有复合条件的if
语句
粗略回顾一下,看起来每个示例都应该做相同的事情。此代码作为一个示例,嵌套的if
语句可以重写为具有复合条件的if
语句
例如,在示例1中,当我们看到这行代码时:
if(r < 0.04)
{
InfectionHistory[x+1] <- 2
}
已返回true
,否则我们将不在检查此条件的主体内
在第二个示例中,这简单地重写为:
if((InfectionHistory[x]==1)&&(r < 0.04))
{
InfectionHistory[x+1] <- 2
}
是的,但我想知道是什么导致了频率上的巨大差异。Ex 1比Ex 2在感染史中给出更多的2。是什么导致了这种情况?根据我的理解,如果这两段代码是逻辑等价的,那么它们应该返回非常相似的1和2的分布。@user2938366我对感染模型或马尔可夫链一无所知。您是否尝试过将示例2更改为我答案中的最后一个代码块?
if((InfectionHistory[x]==1)&&(r < 0.04))
{
InfectionHistory[x+1] <- 2
}
else
{
InfectionHistory[x+1] <- InfectionHistory[x]
}
if((InfectionHistory[x]==1)&&(r < 0.04))
{
InfectionHistory[x+1] <- 2
}
else if((InfectionHistory[x]==2)&&(r < 0.11))
{
InfectionHistory[x+1] <- 1
}
else
{
InfectionHistory[x+1] <- InfectionHistory[x]
}