2017-01-29 1 views
0

Pourquoi ai-je cette erreur lorsque tous mes types semblent être numériques?R "Erreur dans density.default (raw): l'argument 'x' doit être numérique" dans data.frame avec toutes les valeurs int

> str(raw) 
'data.frame': 404166147 obs. of 8 variables: 
$ piece_1_A : int 0 0 0 0 0 0 0 0 0 0 ... 
$ piece_1_B : int 0 0 0 0 0 0 0 0 0 0 ... 
$ piece_2_A : int 0 0 0 0 0 0 0 0 0 0 ... 
$ piece_2_B : int 0 0 0 0 0 0 0 0 0 0 ... 
$ item_1_A : int 0 0 0 0 0 0 0 0 0 0 ... 
$ item_1_B : int 0 0 0 0 0 0 0 0 0 0 ... 
$ piece_2_A: int 0 0 0 0 0 0 0 0 0 0 ... 
$ piece_2_B: int 0 0 0 0 0 0 0 0 0 0 ... 
> sapply(raw, typeof) 
    item_1_A item_1_B item_2_A item_2_B piece_1_A piece_1_B piece_2_A 
    "integer" "integer" "integer" "integer" "integer" "integer" "integer" 
piece_2_B 
    "integer" 
> density(raw[,1]) 
Error in density.default(raw[, 1]) : argument 'x' must be numeric 

Répondre

0

Je vous recommande de vérifier la classe de la variable. La première colonne pourrait être un facteur ou un caractère et le typeof retournerait toujours un entier. Vous devez convertir la variable en classe numérique.

Pour voir le comportement de typeof et class essayer l'exemple ci-dessous:

# load sample dataset 
data(mtcars) 
# check class and type of all variables 
sapply(mtcars, class) 
sapply(mtcars, typeof) 
# convert gear variable to class factor 
mtcars$gear <- as.factor(mtcars$gear) 
# check class and type again 
sapply(mtcars, class) 
sapply(mtcars, typeof)