2012-09-07 5 views
12

Sto lavorando con un output di rarefazione da mothur, che in pratica mi fornisce un set di dati contenente il numero di sequenze campionati e il numero di univoci sequenze in diversi campioni. Vorrei utilizzare ggplot2 per visualizzare questi dati e quindi utilizzare melt per passare da un wide a un formato long.Errore di fusione della funzione di risagoma del pacchetto R: variabili id ​​non trovate nei dati quando si lavora con molti fattori

Il problema è che non trovo modo di farlo funzionare a causa di un errore di melt. Che sostanzialmente afferma

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

A causa delle dimensioni del dataset originale sarebbe impractcal per condividerle qui comunque si dovrebbe essere in grado di ricreare lo stesso problema utilizzando il seguente codice:

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) 

che dà esattamente lo stesso errore:

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

Non riesco a vedere quello che sto facendo male. Sto usando R 2.15.1 su Ubuntu Server 12.04. Entrambe le funzioni reshape::melt e reshape2::melt generano lo stesso errore.

risposta

12

Si dovrebbe usare:

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 
... 

Da l'aiuto di ?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

Così il vostro argomento id.vars dovrebbe essere un vettore carattere di nomi, per esempio "a" o un vettore numerico, ad es. 1. La lunghezza di questo vettore dovrebbe essere uguale al numero di colonne che vuoi come id.

Invece, è stato utilizzato un fattore che conteneva molti più elementi di quante non siano le colonne nei dati.

+0

Grazie mille per la risposta. Ho usato la funzione di fusione prima, ma l'ho chiaramente trascurato nell'aiuto. –

+1

@FMKerckhof: È un errore cognitivo abbastanza comune. Dovevi fornire il "nome" di quella colonna come secondo argomento da sciogliere, piuttosto che dare i valori in quella colonna che è ciò che restituisce "d $ a". In questo caso avresti potuto usare solo il numero 1. –

Problemi correlati