Re: [R] apply function

From: Berwin A Turlach <berwin_at_maths.uwa.edu.au>
Date: Thu, 15 May 2008 15:16:36 +0800

G'day Shuba,

On Thu, 15 May 2008 12:18:58 +0530
"Shubha Vishwanath Karanth" <shubhak_at_ambaresearch.com> wrote:

> Getting a strange result using ?apply. Please look into the below
> codes:
>
> d=data.frame(a=c(1,2,3),b=c("A","B","C"),c=c(TRUE,FALSE,FALSE),d=c(T,F,F))
>
> > class(d[,1])
>
> [1] "numeric"
>
> > class(d[,2])
>
> [1] "factor"
>
> > class(d[,3])
>
> [1] "logical"
>
> > class(d[,4])
>
> [1] "logical"
>
> > apply(d,2,class)
>
> a b c d
>
> "character" "character" "character" "character"
[....]
> Why is this so?

?apply
The first argument to apply is an *array*, not a data.frame. In an array, all elements have to be of the same type, so when your data.frame is coerced into an array the target type of the coercion depends on which components you select.

> How do I get the actual classes of columns of my dataframe d?

Something like:

R> lapply(d, class)
$a
[1] "numeric"

$b
[1] "factor"

$c
[1] "logical"

$d
[1] "logical"

could be used.

HTH. Best wishes,

        Berwin


R-help_at_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. Received on Thu 15 May 2008 - 10:24:27 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 15 May 2008 - 10:30:37 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive