2012-09-07 7 views
12

Ich arbeite mit einer Rarefaction-Ausgabe von mothur, die im Grunde gibt mir einen Datensatz mit der Anzahl der abgetasteten Sequenzen und die Anzahl der eindeutigen Sequenzen in mehreren Proben. Ich möchte ggplot2 verwenden, um diese Daten zu visualisieren und muss daher melt verwenden, um von einem wide zu einem long Format zu gehen.R-Package-Umformfunktion Schmelzefehler: ID-Variablen nicht in Daten gefunden, wenn mit vielen Faktoren gearbeitet

Das Problem ist, dass ich keine Möglichkeit finde, dies aufgrund eines Fehlers von melt zu funktionieren. Die im Grunde sagt

Error: id variables not found in data: 1,3,6, (... and so on)

Aufgrund der Größe des ursprünglichen Datensatzes würde es impractcal sein, es zu teilen hier dennoch sollte man in der Lage sein, das gleiche Problem mit dem folgenden Code zu erstellen:

a<-seq(0,300,3) 
b<-runif(length(a)) 
c<-runif(length(a)) 
d<-as.data.frame(cbind(a,b,c)) 
d$a<-as.factor(d$a) 
melt(d,d$a) 

Welche gibt genau der gleiche Fehler:

Error: id variables not found in data: 0,3,6,9, (...)

Ich sehe nicht was ich falsch mache. Ich benutze R 2.15.1 auf dem Ubuntu Server 12.04. Die beiden Funktionen reshape::melt und reshape2::melt führen zum gleichen Fehler.

Antwort

12

sollten Sie verwenden:

melt(d, id.vars="a") 
     a variable  value 
1  0  b 0.019199459 
2  3  b 0.693699677 
3  6  b 0.937592641 
4  9  b 0.299259963 
5 12  b 0.485403439 
... 

Von Hilfe ?melt.data.frame:

data
data frame to melt

id.vars
vector of id variables. Can be integer (variable position) or string (variable name)If blank, will use all non-measured variables

So kann Ihr id.vars Argument ein Zeichen Vektor von Namen sein sollte, z.B. "a" oder ein numerischer Vektor, z.B. 1. Die Länge dieses Vektors sollte der Anzahl der Spalten entsprechen, die Sie als ID verwenden möchten.

Stattdessen haben Sie einen Faktor verwendet, der weit mehr Elemente enthält als Spalten in Ihren Daten.

+0

Vielen Dank für Ihre Antwort. Ich habe die Schmelzfunktion vorher benutzt aber in der Hilfe deutlich übersehen. –

+1

@FMKerckhof: Es ist ein ziemlich häufiger kognitiver Fehler. Sie mussten den "Namen" dieser Spalte als zweites Argument zum Schmelzen angeben, anstatt die Werte in dieser Spalte anzugeben, die 'd $ a' zurückgibt. In diesem Fall hätten Sie nur die Nummer 1 verwenden können. –