2012-01-09 13 views
5

Grazie in anticipo per la risposta. Sto cercando di creare un grafico a barre in pila da un file CSV, e ho incontrato il seguente incidente di percorso: Per prima cosa ho messo il csv in una variabile:Barplot non valuta i dati in R

test <- read.csv(file=\"test4.csv\",sep=\",\",head=TRUE") 

Poi cerco di creare un grafico a barre utilizzando il seguente

barplot(test) 

ed ottengo il seguente errore,

Error in barplot.default(test) : 'height' must be a vector or a matrix 

così cerco

barplot(t(test)) 

e funziona, ma come previsto gli assi sono accesi, quindi cerco

barplot(t(t(test))) 

e funziona, ma mi sento ci deve essere una soluzione migliore rispetto recepimento della trasposizione.

risposta

12

Il problema è che read.csv outputs a data frame e barplot expects either a vector or a matrix. La funzione barplot funziona quando si traspone perché t() coerces data frames to matrices.

Se uno inizia con

test <- as.matrix(read.csv(file="test4.csv",sep=",",head=TRUE)) 

o in seguito fare

barplot(as.matrix(test)) 

allora si dovrebbe andare bene.

+0

Grande !! domanda laterale: come posso affermare che la prima colonna non fa parte dei dati –

+2

Vuoi dire che non vuoi includere la prima colonna di 'test'? In tal caso, puoi chiamare 'barplot (as.matrix (test [, 2: ncol (test)])) (cioè prendendo le colonne di' test' iniziando dal secondo e finendo con molte colonne 'test' ha (che è 'ncol (test)')). –