2016-08-02 1 views
0

Ich Anfänger in [r] und habe nicht viel Erfahrung mit der Lösung von Fehlern, so dass ich noch einmal Hilfe brauche. Ich habe eine Daten.Frame mit dem Namen n_occur, die 2 Spalten hat - Anzahl und Häufigkeit. Beide Werte sind Ganzzahlen. Ich wollte das Histogramm bekommen, aber ich habe den Fehler: Argument x muss numerisch sein, also wollte ich beide Spalten in num ändern. Zuerst habe ich versucht, mit den einfachsten Weg:Ändern df von ganzen Zahlen zu num funktioniert nicht

n_occur[,] = as.numeric(as.character(n_occur[,])) 

sondern als Ergebnis alle Werte geändert in NA. So, nachdem auf dem Stapel der Suche, ich beschlossen, diese Formel zu verwenden:

indx <- sapply(n_occur, is.factor) 
n_occur[indx] <- lapply(n_occur[indx], function(x) as.numeric(as.character(x))) 

und nichts geändert, ich habe immer noch ganze Zahlen und Hist immer noch nicht funktioniert. Irgendwelche Ideen, wie man das macht? Vielen Dank im Voraus;)

Antwort

0

Ich glaube nicht, dass Sie das wirklich tun müssen, nur die Funktion mit den tatsächlichen Spalten anstelle des gesamten Datenrahmens zu liefern. Zum Beispiel:

n_occur = data.frame(
    number = sample(as.integer(1:10), 10, TRUE), 
    freq = sample(as.integer(0:10), 10, TRUE) 
) 
str(n_occur) 

'data.frame': 10 obs. of 2 variables: 
$ number: int 9 8 8 5 6 7 8 10 3 4 
$ freq : int 0 9 2 0 4 10 7 2 7 9 

hist(n_occur$number) # works 
hist(n_occur$freq) # works 
plot(n_occur$number, n_occur$freq, type = 'h') # works 
hist(n_occur) # fails since it is the whole dataframe 

Auch wenn Sie noch das tun wollen, wandelt dies einen Faktor, um numerischen:

as.numeric(factor(1:10)) 
2

Wenn jemand es in Zukunft brauchen: das Problem mit mutate von dplyr gelöst:

n_occur <- mutate(n_occur, freq=as.numeric(freq)) 

für beide Spalten separat. Es hat funktioniert;)