2014-10-01 9 views
26

Sto cercando di creare un grafico da elementi del file CSV che assomiglia a questo:argomenti implicano diverso numero di righe: 8, 20

h1,h2,h3,h4 
a,1,0,1,0 
b,1,1,0,1 
c,0,0,1,0 

Ho provato il seguente codice, ma sto ricevendo un errore dicendo

Error in data.frame(id = varieties, attr(mat, "row.names"), check.rows = FALSE) : 
    arguments imply differing number of rows: 8, 20 

i dati di esempio hanno 8 colonne e 20 righe (esclusi i nomi di intestazione e di riga). Ho provato a cercare online e ho cercato di implementare alcune correzioni, ma il problema persiste ancora. Apprezzo davvero qualsiasi aiuto.

mat <- read.csv("trial.csv", header=T, row.names=1) 
varieties = names(mat) 
df <- data.frame(id=varieties,attr(mat, "row.names"), check.rows= FALSE) 
+0

Quale riga genera l'errore? Puoi eseguire lo script riga per riga e riportare i risultati? È possibile condividere il file? –

+0

@MylesBaker 'df <- data.frame (id = varietà, attr (mat, "row.names"), check.rows = FALSE) "restituisce l'errore. – abn

+1

Funzionerà solo se 'mat' è una matrice quadrata (nrows = ncols). Cosa vuoi ottenere? Forse un 'elenco' è più adatto alle tue esigenze ... Oppure vedi' cbind.fill' [qui] (http://stackoverflow.com/questions/7962267/cbind-a-df-with-an-empty-df -cbind-fill) – EDi

risposta

23

tuo data.frame mat è rettangolari (N_ROWS! = N_cols).

Pertanto, non è possibile creare un data.frame fuori dalla colonna e dai nomi dei lavori, poiché ogni colonna in un data.frame deve avere la stessa lunghezza.

Forse questo è sufficiente vostre esigenze:

require(reshape2) 
mat$id <- rownames(mat) 
melt(mat) 
6

Ho avuto lo stesso messaggio di errore così sono andato un po 'googling sono riuscito a risolvere il problema con il seguente codice.

df<-data.frame(words = unlist(words)) 

parole è un elenco di caratteri.

Questo nel caso in cui qualcun altro abbia bisogno che l'output sia un frame di dati.

Problemi correlati