Domanda

Sto cercando di leggere un file CSV con i nomi di fila ripetuti, ma non ci riuscì. Il messaggio di errore che sto ottenendo è Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

Il codice che sto usando è:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"))

Un esempio dei miei dati è il seguente:

did <- c("1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657","1N657")
aid <- c(101,102,103,104,105,106,107,108,109,110)
temp <- c(36,38,37,39,35,37,36,34,39,38)

data <- cbind(did,aid,temp)

Ogni aiuto sarà apprezzato.

È stato utile?

Soluzione

La funzione è vedere i nomi di righe duplicate, quindi è necessario fare con questo. Probabilmente il modo più semplice è con row.names = NULL , che costringerà la numerazione fila - in altre parole, si tratta di vostra prima colonna come prima dimensione e non come il numeri di riga, e così aggiunge numeri di riga (interi consecutivi a partire da "1".

read.csv("S1N657.csv", header=T,fill=T, col.names=c("dam","anim","temp"), row.names=NULL)

Altri suggerimenti

provare questo:

S1N657 <- read.csv("S1N657.csv",header=T,fill=T,col.names=c("dam","anim","temp"), 
          row.names = NULL)[,-1]

Un problema che ho avuto di recente è stato che il numero di colonne nella riga di intestazione non corrisponde al numero di colonne che ho avuto nei dati stessi. Ad esempio, i miei dati era delimitato da tabulazioni e tutte le righe di dati ha avuto un carattere di tabulazione finale. La riga di intestazione (che avevo aggiunto manualmente) no.

ho voluto le righe per essere auto-numerata, ma invece stava guardando la mia prima fila come il nome della riga. Dalla documentazione (enfasi aggiunta da me):

  

row.names un vettore di nomi di riga. Questo può essere un vettore che dà i nomi di riga reali, o un solo numero dando la colonna della tabella che contiene i nomi di riga, o una stringa di caratteri che dà il nome della colonna della tabella contenente i nomi di riga.

     

Se c'è un'intestazione e la prima riga contiene un campo inferiore al numero di colonne, la prima colonna l'ingresso è utilizzato per i nomi di riga. Altrimenti se row.names manca, le righe sono numerate.

     

Uso row.names = forze NULL numerazione fila. Mancanti o row.names NULL generare nomi di riga che sono considerati ‘automatico’ (e non conservati as.matrix).

Aggiunta di un carattere di tabulazione in più per la riga di intestazione fatta la riga di intestazione hanno lo stesso numero di colonne righe di dati, risolvendo così il problema.

Indovinare il file CSV è stato uno convertito da xlsx.Add una virgola alla fine della prima riga, rimuovere l'ultima riga, fatto

mi è stato sempre lo stesso " 'row.names' duplicati non sono ammessi" di errore per un piccolo CSV. Il problema era che da qualche parte al di fuori della zona di 14x14 grafico volevo ci fosse una cella casuale con uno spazio / altri dati.

scoperto la risposta quando ho eseguito "row.names = NULL" e c'erano più righe di dati vuote sotto il mio tavolo (e quindi più nomi di righe duplicate tutti "in bianco").

soluzione era quella di eliminare tutte le righe / colonne di fuori dell'area tavolo, e ha funzionato!

In breve, Controlla la tua nomi delle colonne . Se la prima riga è i nomi delle colonne, si può mancare uno o più nomi.

Esempio:

"a","b","c"
a,b,c,d
a,b,c,d

L'esempio precedente causerà un errore row.name perché ogni riga ha 4 valori, ma solo 3 colonne sono chiamati.

Questo è successo a me quando stavo costruendo un CSV da un risorse online.

nel mio caso il problema è venuto dal file excel. Anche se sembrava perfettamente organizzato, non ha funzionato e ho avuto sempre il messaggio: Error in read.table(file = file, header = header, sep = sep, quote = quote, : duplicate 'row.names' are not allowed.

Ho cercato di copiare-incollare la mia matrice di eccellere in un nuovo foglio di Excel vuoto e ho ritentato di leggerlo: ha funzionato! Nessun messaggio di errore più!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top