Comment tester quand la condition retourne numérique (0) dans R
imaginons que vous souhaitiez construire un test simple basé sur la condition setdiff(input, 1:9)
.
Comment puis-je construire un
if isnotempty(setdiff(input, 1:9)) stop ("not valid")
déclaration qui arrête l'exécution lorsque l'entrée est c(3, 12)
mais continue quand l'entrée est c(2,5,7)
dire?
Merci beaucoup,
Bertie
25
demandé sur
sgibb
2012-05-19 15:10:59
4 réponses
Vous pouvez utiliser ?length
:
isEmpty <- function(x) {
return(length(x)==0)
}
input <- c(3, 12);
if (!isEmpty(setdiff(input, 1:9))) {
stop ("not valid")
}
36
répondu
sgibb
2012-05-19 11:41:03
Voici une autre option identical(x, numeric(0))
. Voici un exemple (en gros tout pris de sgibb et remplacé la ligne de clé que je suis paresseux):
isEmpty <- function(x) {
return(identical(x, numeric(0)))
}
input <- c(3, 12)
if (!isEmpty(setdiff(input, 1:9))) {
stop ("not valid")
}
11
répondu
Tyler Rinker
2012-05-19 13:01:10
ceci ne répond pas à la question dans votre ligne d'objet, mais je pense que c'est une meilleure approche pour ce que vous essayez d'atteindre:
if(!all(input %in% 1:9)) stop("not valid")
0
répondu
flodel
2012-05-19 18:20:29
j'ai aimé la fonction isEmpty. Je propose ce qui suit, juste au cas où vous parsez un vecteur, ou une liste:
isEmpty <- function(x) {
s<-sapply(x, function(y) length(y)==0, simplify = T)
return(s)
}
0
répondu
i love mistaking
2018-06-13 11:38:55