L'utilisation de sapply()
ou lapply()
semble logique ici:
sapply(iris, function(x) class(x) %in% c("integer","numeric"))
qui donne:
> sapply(iris, function(x) class(x) %in% c("integer","numeric"))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
TRUE TRUE TRUE TRUE FALSE
Worth notant que dans votre boucle, vous développez le numericvars
vecteur à chaque itération de la boucle; en R, c'est un gros non-non! Il force R à copier et à étendre le vecteur à chaque fois. Allouer un espace de stockage suffisant avant la main et remplir l'objet; ici que cela signifierait la création numericvars
comme
numericvars <- character(length = ncol(iris))
puis dans la boucle faisant
nams <- names(iris)
for(i in seq_len(ncol(iris))) {
if(class(iris[, i]) == 'integer' | class(iris[, i]) == 'numeric') {
numericvars[i] <- nams[i]
}
}
Un peu plus de travail, mais beaucoup plus efficace, mais vous ne verrez que quand le nombre d'itérations devient plus grand.
objets qui pousse dans une boucle est un non-non ('numericvars <- c (numericvars, Var)') –