J'ai une fonction dans laquelle je définis un data.frame
que j'utilise des boucles pour remplir avec des données. À un moment donné, je reçois le message d'avertissement:
Messages d'avertissement: 1: dans
[<-.factor
(*tmp*
, iseq, value = "CHANGE"): niveau de facteur non valide, NA générés
Par conséquent, lorsque je définis mon data.frame, je voudrais définir l'option stringsAsFactors
sur FALSE
mais je ne comprends pas comment le faire.
J'ai essayé:
DataFrame = data.frame(stringsAsFactors=FALSE)
et aussi:
options(stringsAsFactors=FALSE)
Quelle est la bonne façon de définir l'option stringsAsFactors?
Cela dépend de la façon dont vous remplissez votre bloc de données, pour lequel vous n'avez donné aucun code. Lorsque vous construisez un nouveau bloc de données, vous pouvez le faire comme ceci:
x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE)
Dans ce cas, si par ex. aVector
est un vecteur de caractères, puis la colonne dataframe x$aName
sera également un vecteur de caractères et non un vecteur de facteurs. Combiner cela avec un bloc de données existant (en utilisant rbind
, cbind
ou similaire) devrait conserver ce mode.
Lorsque vous exécutez
options(stringsAsFactors = FALSE)
vous modifiez le paramètre global par défaut. Ainsi, chaque trame de données que vous créez après avoir exécuté cette ligne ne sera pas automatiquement convertie en facteurs, sauf indication contraire explicite. Si vous avez seulement besoin d'éviter la conversion en un seul endroit, je préfère ne pas changer la valeur par défaut. Cependant, si cela affecte de nombreux endroits dans votre code, changer la valeur par défaut semble être une bonne idée.
Une dernière chose: si votre vecteur déjà contient des facteurs, alors aucun des éléments ci-dessus ne le transformera en vecteur de caractères. Pour ce faire, vous devez explicitement le reconvertir à l'aide de as.character
ou similaire.