2017-01-29 1 views
0

Warum bekomme ich diesen Fehler, wenn alle meine Typen numerisch zu sein scheinen?R "Fehler in Density.default (roh): Argument 'x' muss numerisch sein" in data.frame mit allen int-Werten

> 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 

Antwort

0

Ich würde empfehlen, die Klasse der Variablen zu überprüfen. Die erste Spalte könnte ein Faktor oder ein Zeichen sein, und die typeof würde immer noch eine ganze Zahl zurückgeben. Sie müssen die Variable in die numerische Klasse konvertieren.

Um das Verhalten von typeof und class versuchen, das Beispiel siehe unten:

# 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) 
Verwandte Themen