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 ______________________________________________ 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.