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.

Reply via email to