When I use the read.csv() function in R to load data, I often find that an X has been added to variable names. I think I just about always see it
read.table and read.csv have a check.names= argument that you can set to FALSE.
For example, try it with this input consisting of just a header:
> read.csv(text = "a,1,b")
[1] a X1 b
<0 rows> (or 0-length row.names)
versus
> read.csv(text = "a,1,b", check.names = FALSE)
[1] a 1 b
<0 rows> (or 0-length row.names)