Questo errore è abbastanza auto-esplicativo. Sembra che manchino dei dati nella prima riga del tuo file di dati (o seconda riga, a seconda dei casi, dal momento che stai usando header = TRUE
).
Ecco un mini esempio:
## Create a small dataset to play with
cat("V1 V2\nFirst 1 2\nSecond 2\nThird 3 8\n", file="test.txt")
R rileva automaticamente che deve aspettarsi rownames più due colonne (3 elementi), ma non trova 3 elementi sulla linea 2, in modo da ottenere un errore:
read.table("test.txt", header = TRUE)
# Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
# line 2 did not have 3 elements
sguardo al file di dati e vedere se c'è davvero un problema:
cat(readLines("test.txt"), sep = "\n")
# V1 V2
# First 1 2
# Second 2
# Third 3 8
Manua Potrebbe essere necessaria la correzione, oppure possiamo supporre che il valore del primo valore nella riga della riga "Secondo" dovrebbe essere nella prima colonna, mentre altri valori dovrebbero essere NA
. Se questo è il caso, fill = TRUE
è sufficiente per risolvere il tuo problema.
read.table("test.txt", header = TRUE, fill = TRUE)
# V1 V2
# First 1 2
# Second 2 NA
# Third 3 8
R è anche abbastanza intelligente per capirlo quanti elementi di cui ha bisogno, anche se rownames mancano:
cat("V1 V2\n1\n2 5\n3 8\n", file="test2.txt")
cat(readLines("test2.txt"), sep = "\n")
# V1 V2
# 1
# 2 5
# 3 8
read.table("test2.txt", header = TRUE)
# Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
# line 1 did not have 2 elements
read.table("test2.txt", header = TRUE, fill = TRUE)
# V1 V2
# 1 1 NA
# 2 2 5
# 3 3 8
Si potrebbe anche impostare 'read.table (..., comment.char =" ")' per disattivare l'interpretazione dei commenti nel file. –
Gli apostrofi possono anche causare ('). Risolvi questo problema impostando l'opzione quote = "\" " – Stuart