[Bioc-devel] Applying "class" function to columns of a data.frame always return character

Martin Morgan mtmorgan at fhcrc.org
Fri Jan 20 16:13:37 CET 2012

On 01/20/2012 07:07 AM, João Daniel Nunes Duarte wrote:
> Hello,
> I need to identify which columns from a data.frame is a factor. Since I
> need to test "is.factor" for all columns, I tried the following code:
> apply(dataframe, 2, is.factor)
> But it always returned FALSE. Then I tried to check the classes of those
> columns using:
> apply(dataframe, 2, class)
> And it always returned "character". Is the related to the fact that apply
> function should be applied to arrays or matrixes, and not to data.frames?
> So I believe that apply function convert the data.frame into a matrix. And
> the class of the matrix will be character if any of its elements is not
> numeric.
> So, if I my conclusion about apply function is correct, this is not the way
> I should proceed. So, how can I get a vector of booleans as result of some
> function applied to columns of a data.frame, e.g., is.factor?

A data frame is a list of equal length vectors, so you can use

    sapply(df, class)


> Thanks!
> Cheers,
> João Daniel
> UFMG - Brazil
> 	[[alternative HTML version deleted]]
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel

Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109

Location: M1-B861
Telephone: 206 667-2793

More information about the Bioc-devel mailing list