Re: [R] class in apply

From: Stéphane Dray <dray_at_biomserv.univ-lyon1.fr>
Date: Wed 20 Jul 2005 - 16:45:37 EST

apply transorm your data.frame into a matrix which can contains only one type of values (character or numeric or logical). data.frame are list, so they can contain various kind of data, and a solution to your problem is given by lapply:

 > b=lapply(df, function(r) print(class(r['a']))) [1] "numeric"
[1] "factor"

>Numeric data that is part of a mixed type data frame is converted into
>character. How can I tell apply to maintain the original class of a
>column and not convert it into character. I would like to do this of
>the vector and not inside the apply function individually over each
>element. Consider the following two scenarios, in the second column
>'a' maintained its class while it lost its numeric type in the first
>case.
>
>
>
>>df = data.frame(a=c(1,2), b=c('A','B'))
>>df
>>
>>
> a b
>1 1 A
>2 2 B
>
>
>>a=apply(df, 1, function(r) print(class(r['a'])))
>>
>>
>[1] "character"
>[1] "character"
>
>
>>a=apply(df, 1, function(r) print(class(r['b'])))
>>
>>
>[1] "character"
>[1] "character"
>
>
>
>
>>df = data.frame(a=c(1,2))
>>df
>>
>>
> a
>1 1
>2 2
>
>
>>a=apply(df, 1, function(r) print(class(r['a'])))
>>
>>
>[1] "numeric"
>[1] "numeric"
>
>______________________________________________
>R-help@stat.math.ethz.ch mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>
>
>

--
Stéphane DRAY (dray@biomserv.univ-lyon1.fr ) Laboratoire BBE-CNRS-UMR-5558, Univ. C. Bernard - Lyon I 43, Bd du 11 Novembre 1918, 69622 Villeurbanne Cedex, France Tel: 33 4 72 43 27 57 Fax: 33 4 72 43 13 88 http://www.steph280.freesurf.fr/



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Jul 20 16:51:10 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:33:51 EST