[R] Extraneous full stop in csv read

Duncan Murdoch murdoch.duncan at gmail.com
Thu Jun 29 13:27:38 CEST 2017


On 28/06/2017 7:30 PM, John wrote:
> I ran into a puzzling minor behaviour I would like to understand.
> Reading in a csv file, I find an extraneous "." after a column header,
> "in" [short for "inches"] thus, "in.". Is this due to "in" being
> reserved?  I initially blamed this on RStudio or to processing the data
> through LibreCalc. However, the same result occurs in a console R
> session.  Sending the file to the console via less reveals no strange
> characters in the first line.  The data is California statewide
> rainfall which was screen captured from the Western Regional Climate
> Center web site.
>
> First 15 lines including header line:
>
> "yr","mo","Data","in"
> 1895,1,8243,8.243
> 1895,2,2265,2.265
> 1895,3,2340,2.34
> 1895,4,1014,1.014
> 1895,5,1281,1.281
> 1895,6,58,0.058
> 1895,7,156,0.156
> 1895,8,140,0.14
> 1895,9,1087,1.087
> 1895,10,322,0.322
> 1895,11,1331,1.331
> 1895,12,2428,2.428
> 1896,1,7156,7.156
> 1896,2,712,0.712
> 1896,3,2982,2.982
>
> File read in as follows:
>
> x <- read.csv('DRI-mo-prp.csv', header = T)
>
> Structure:
>
>  str(x)
> 'data.frame':   1469 obs. of  4 variables:
>  $ yr  : int  1895 1895 1895 1895 1895 1895 1895 1895 1895 1895 ...
>  $ mo  : int  1 2 3 4 5 6 7 8 9 10 ...
>  $ Data: int  8243 2265 2340 1014 1281 58 156 140 1087 322 ...
>  $ in. : num  8.24 2.27 2.34 1.01 1.28 ...
> [note "in" is now "in."]

Yes, "in" is not a valid variable name, because of its syntactic use. 
You can stop this correction by setting check.names=FALSE in your call 
to read.csv.  This will make it a little tricky to deal with in some 
situations, e.g.

 > x <- data.frame(4)
 > names(x) <- "in"
 > x
   in
1  4
 > x$in
Error: unexpected 'in' in "x$in"

but you can work around this problem: x[, "in"] and x$`in` are both fine.

Duncan Murdoch



More information about the R-help mailing list