Confusing error in R: Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : line 1 did not have 42 elements)

R

R Problem Overview


I am new to R. I am trying to read in a "CSV" file that is space-space delimited. The file does not have headers. It looks like this

Element1 Element2
Element5 Element6 Element7

I am trying to read it in like this:

> mydata <- read.table("/PathTo/file.csv")
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 1 did not have 14 elements

Why does it expect 14 elements in the first row? How do I import this file?

R Solutions


Solution 1 - R

read.table wants to return a data.frame, which must have an element in each column. Therefore R expects each row to have the same number of elements and it doesn't fill in empty spaces by default. Try read.table("/PathTo/file.csv" , fill = TRUE ) to fill in the blanks.

e.g.

read.table( text= "Element1 Element2
Element5 Element6 Element7" , fill = TRUE , header = FALSE )
#        V1       V2       V3
#1 Element1 Element2         
#2 Element5 Element6 Element7

A note on whether or not to set header = FALSE... read.table tries to automatically determine if you have a header row thus:

> header is set to TRUE if and only if the first row contains one fewer field than the number of columns

Solution 2 - R

To read characters try

scan("/PathTo/file.csv", "")

If you're reading numeric values, then just use

scan("/PathTo/file.csv")

scan by default will use white space as separator. The type of the second arg defines 'what' to read (defaults to double()).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionbernie2436View Question on Stackoverflow
Solution 1 - RSimon O'HanlonView Answer on Stackoverflow
Solution 2 - RFernandoView Answer on Stackoverflow