[R] read a file of text with read.table
Ron Crump
R.E.Crump at warwick.ac.uk
Thu Jun 26 09:59:07 CEST 2014
Hi Carol,
> It might be a primitive question but I have a file of text and there is no separator between character on each line and the strings on each line have the same length. The format is like the following
>
> absfjdslf
> jfdldskjff
> jfsldfjslk
>
> When I read the file with read.table("myfile",colClasses = "character"), instead of putting the strings in a table of number of rows x length of string, read.table saves the file in a table of number of rows x 1 and each element seems to be a factor. Why does read.table not account for colClasses = "character"?
read.table relies on a separator to differentiate between columns, so it
is not appropriate for your file, read.fwf would do the job.
Setting colClasses (in my understanding) tells read.table how to treat
input as it comes in - so it disables some testing of data types and
makes reading quicker, it does not disable the setting of character data
to be factors, which is the default. You need to use the
stringsAsFactors=FALSE option for that.
So, for your example (and I have added a letter to the first row to make
it the same length as the others):
cf <- "absfjdslfx
jfdldskjff
jfsldfjslk"
cdf <-
read.fwf(textConnection(cf),widths=rep(1,10),colClasses="character",stringsAsFactors=FALSE)
See ?read.fwf for more information. A width is required for each column
(in this case 1 repeated 10 times).
Hope this helps.
Ron.
More information about the R-help
mailing list