2012-01-09 14 views
5

Z góry dziękuję za odpowiedź. Próbuję utworzyć skumulowany słupkowy wykres z pliku csv, a ja napotkasz następującym czkawka: Najpierw kładę CSV do zmiennej:Barplot nie ocenia danych w R

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

Wtedy staram się tworzyć bar działkę przy użyciu następujące

barplot(test) 

i otrzymuję następujący błąd,

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

więc staram

barplot(t(test)) 

i działa zgodnie z oczekiwaniami, ale oś są włączone, więc staram

barplot(t(t(test))) 

i działa, ale czuję, że musi być lepszym rozwiązaniem niż transponujących transpozycji.

Odpowiedz

12

Problem polega na tym, że read.csv outputs a data frame i barplot expects either a vector or a matrix. Funkcja barplot działa po transpozycji, ponieważ t() coerces data frames to matrices.

Jeśli albo zacząć

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

czy później zrobić

barplot(as.matrix(test)) 

potem powinno być w porządku.

+0

Świetne !! pytanie dodatkowe: jak mogę stwierdzić, że pierwsza kolumna nie jest częścią danych? –

+2

Masz na myśli, że nie chcesz dołączyć pierwszej kolumny 'testu'? W takim przypadku możesz wywołać 'barplot (as.matrix (test [, 2: ncol (test)])) (tzn. Pobranie kolumn' test' zaczynających się od drugiego i kończących się na wielu kolumnach 'test' (co oznacza 'ncol (test)')). –