On Jul 11, 2014, at 2:36 PM, Marc Schwartz <marc_schwa...@me.com> wrote:
> > On Jul 11, 2014, at 9:15 AM, Tim Richter-Heitmann <trich...@uni-bremen.de> > wrote: > >> Hi there! >> >> I have huge datafile of 600 columns 360 samples: >> >> data <- read.table("small.txt", header = TRUE, sep = "\t", dec = ".", >> row.names=1) >> >> The txt.file (compiled with excel) is showing me only numbers, however R >> gives me the structure of ANY column as "factor". >> >> When i try "stringsAsFactors=FALSE" in the read command, the structure >> of the dataset becomes "character." >> >> When i try as.numeric(data), i get >> >> Error: (list) object cannot be coerced to type 'double' >> >> >> even, if i try to subset columns with []. >> >> >> When i try as.numeric on single columns with $, i am successful, but the >> numbers dont make any sense at all, as the factors are not converted by >> their levels: >> >> >> Factor w/ 358 levels "0,123111694",..: 11 14 50 12 38 44 13 76 31 30 >> >> >> becomes >> >> >> num 11 14 50 12 38 44 13 76 31 30 >> >> >> whereas i would need the levels, though! >> >> >> I suspect excel to mess up the "save as tab-delimited text", but the text >> file seems fine with me on surface (i dont know how the numbers are stored >> internally). I just see correct numbers, also the View command >> yields the correct content. >> >> >> >> Anyone knows help? Its pretty annoying. >> >> >> >> Thank you! > > > Hi, > > See: > > > http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-do-I-convert-factors-to-numeric_003f > > Regards, > > Marc Schwartz Sorry, I just noted that you defined dec = "." in your call to read.table(), whereas it appears that a comma (,) is being used as a decimal separator in your source data. Modify the dec = "." to dec = "," and that should obviate the need to convert the numeric values to factors during import. They should be converted to numerics right away. For example: > str(read.table(textConnection("0,1234"), dec = ".")) 'data.frame': 1 obs. of 1 variable: $ V1: Factor w/ 1 level "0,1234": 1 > str(read.table(textConnection("0,1234"), dec = ",")) 'data.frame': 1 obs. of 1 variable: $ V1: num 0.123 Regards, Marc ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.