【发布时间】:2020-08-01 23:40:07
【问题描述】:
这里是第一个问题,所以请在表格上放纵一下。 如果我只保留整数,我想知道一个充满小数的向量的长度,包括在整数已经存在时擦除它们。 我创建了一个 if 函数,如果它们符合条件,则将某些行保留在“要保留的行”向量中,这是一个布尔值。 不幸的是,在 if 函数所在的 for 循环中经过一段时间后,条件为 NA,因此此消息返回: 如果需要 true/false 的地方缺少值,则会出错。 任何想法为什么? 感谢您的帮助,如果需要,请给我建议以使最终的问题更清楚
epidemies_time <-c(1:epidemies_nb)
time_code <- for (epid_idx in 1:epidemies_nb)
{
time_trunc<-trunc(time)
row_to_keep<-rep(FALSE,taille)
row_to_keep[1] <- TRUE
dayafterday <- for (time_idx in 2:taille) {
if (time_trunc[time_idx] != time_trunc[time_idx-1]) {`
row_to_keep[time_idx-1] <- TRUE
if (time_idx > 2) {
time_trunc[time_idx-1] <- time_trunc[time_idx-1] + 1
}
time_trunc <- time_trunc[row_to_keep]
duree<- length(time_trunc)
epidemies_time[epid_idx]<-duree
} } }
PS: 我跳过了该问题中脚本的所有无用部分,但是如果您需要它或者如果您对如何获得“时间”向量感到好奇,整个代码也在这里,但我确信它有效
suscept<-rep(0,taille)
infect<-rep(0,taille)
remov<-rep(0,taille)
time<-rep(0,taille)
nvcas<-rep(0,taille)
pop_susc <- 0.1
infect[1]<-5
suscept[1]<- pop_susc*taille - infect[1]
remov[1]<- taille - infect[1]+suscept[1]
beta<-0.0000524
alpha<-0.4
epidemies_nb <- 60
epidemies_time <-c(1:epidemies_nb)
time_code <- for (epid_idx in 1:epidemies_nb)
{
modele_epid <- for(ind_idx in 1:(taille-1))
{
if(infect[ind_idx]!=0)
{
s<--log(runif(1))/(beta*suscept[ind_idx]*infect[ind_idx]+alpha*infect[ind_idx])
time[ind_idx+1]<-time[ind_idx]+s
rand<-runif(1)
proba<-beta*suscept[ind_idx]*infect[ind_idx]/(beta*suscept[ind_idx]*infect[ind_idx]+alpha*infect[ind_idx])
if (rand<=proba)
{
suscept[ind_idx+1]<-suscept[ind_idx]-1
infect[ind_idx+1]<-infect[ind_idx]+1
remov[ind_idx+1]<-remov[ind_idx]
nvcas[ind_idx+1]<-1
}
if (rand>proba)
{
suscept[ind_idx+1]<-suscept[ind_idx]
infect[ind_idx+1]<-infect[ind_idx]-1
remov[ind_idx+1]<-remov[ind_idx]+1
nvcas[ind_idx+1]<-0
}
}
}
time_trunc<-trunc(time)
row_to_keep<-rep(FALSE,taille)
row_to_keep[1] <- TRUE
dayafterday <- for (time_idx in 2:taille) {
if (time_trunc[time_idx] != time_trunc[time_idx-1]) {
row_to_keep[time_idx-1] <- TRUE
if (time_idx > 2) {
time_trunc[time_idx-1] <- time_trunc[time_idx-1] + 1
}
time_trunc <- time_trunc[row_to_keep]
duree<- length(time_trunc)
epidemies_time[epid_idx]<-duree
}
}
}
epidemies_time```
【问题讨论】:
标签: r for-loop if-statement na