David Clunie
2013-Jan-24 14:38 UTC
[R] How to get read.table() or scan() to report line on which error occurs
Hi
Please excuse this naive question, but I have search the FAQs and lists
and web for an answer but not found one.
I have a text file of several hundred thousand rows and somewhere in the middle
there is a malformed row.
Doing:
mydata<-read.table("mydata.dat", header=FALSE, sep="
",
col.names=mydatacolnames, colClasses=mydatacolclasses,
row.names="hash")
results in:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
scan() expected 'a real', got 'MONOCHROME2'
Calls: read.table -> scan
Execution halted
which is not very helpful, since it does not report where the error occurs,
and searching for the offending string does not always help because it may
occur many times.
I know that I can do a:
count.fields("mydata.dat", sep=" ")
and trawl through the results to find a row that does not have the same number
of fields, and that worked on this occasion just fine.
But I would like to know for next time if there is an easier way to just command
read.table() or scan() to give a more helpful message in the first place?
Thanks ... David
