[R] Find classes for each column of a data.frame
Marc Schwartz
marc_schwartz at me.com
Thu Aug 26 17:44:18 CEST 2010
On Aug 26, 2010, at 10:36 AM, David Winsemius wrote:
>
> On Aug 26, 2010, at 11:31 AM, Daniel Brewer wrote:
>
>> Hello,
>>
>> Is there a simple way to get the class type for each column of a
>> data.frame? I am in the situation where I would like to get all the
>> columns of a data.frame that are factors.
>>
>> I have tried:
>> apply(df,2,class)
>
> lapply(df, class)
>
>> but all the columns come back as class "character".
>
> Agree that is not what I would have expected.
> sapply(iris, class)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"numeric" "numeric" "numeric" "numeric" "factor"
> apply(iris, 2, class)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"character" "character" "character" "character" "character"
The second occurs because apply() will coerce the data frame to a matrix:
> str(as.matrix(iris))
chr [1:150, 1:5] "5.1" "4.9" "4.7" "4.6" "5.0" "5.4" ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:5] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" ...
Since a matrix can only contain a single class of objects (recall that a matrix is a vector with dim attributes), 'iris' becomes a character matrix.
HTH,
Marc Schwartz
More information about the R-help
mailing list