2 pièce(s) jointe(s)
R: Operateur && et boucle IF
Je débute en R et je rencontre un problème. J'ai l'impression que c'est a cause de ma condition dans le IF mais je ne suis pas sure.
Mes données sont ici:
Pièce jointe 261610
Et mon programme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ################## Model Input ##################
fact <- 1.46
file_r <- file2[file2$G == 0,] #delete the row where G == 1
C_Agents <- sum(file2$G == 1 & file2$A == "Tiger")
NC_Agents <- sum(file2$G == 1 & file2$A == "Lion")
################## Model Run ##################
for (i in nrow(file_r)) {
i <- i+1
rand2 <- 0.2
Affinity <- file_r$C/file_r$E + (rand2 *file_r$F*file_r$H)
if((file_r$A == "Tiger") && (Affinity < (file_r$B) * (file_r$D))){
Tiger_lost <- sum(file_r$A == "Tiger")
file_r$A <- "Lion" #switch Tiger to Lion
} else if((file_r$A == "Lion") && (Affinity < (file_r$B) * (file_r$D) * fact)){
Tiger_gained <- sum(file_r$A == "Lion")
file_r$A <- "Tiger" #switch Lion to Tiger
}
}
################## Model Output ##################
C_Agents
NC_Agents
Tiger_lost
Tiger_gained |
Le résultat:
Code:
1 2 3 4 5 6 7 8
| > C_Agents
[1] 2
> NC_Agents
[1] 5
> Tiger_lost
[1] 3
> Tiger_gained
Error: object 'Tiger_gained' not found |
Le soucis est que la condition ELSE IF est atteinte une fois ici normalement:
Pièce jointe 261614
Je ne comprends pas pourquoi la condition n'est jamais atteinte alors que c'est censé l'être puisque la condition (file_r$A == "Tiger") && (Affinity < (file_r$B) * (file_r$D)) n'est pas respectée, donc on continue dans le ELSE IF et la condition (file_r$A == "Lion") && (Affinity < (file_r$B) * (file_r$D) * fact) est respectée. Donc la première colonne est censée être changée en "Tiger" :(
Merci de votre aide !