from ?apply: " If 'X' is not an array but has a dimension attribute, 'apply' attempts to coerce it to an array via as.matrix' if it is two-dimensional (e.g., data frames) or via 'as.array'."
if any of the columns in your dataframe is not numeric, apply will try to coerce all of them to the least common supertype, and you'll get FALSE for each column; this is not the case with sapply. d1 = data.frame(x=numeric(10), y=numeric(10)) d2 = data.frame(d1, z=character(10)) apply(d1, 2, is.numeric) # TRUE TRUE apply(d1, 2, function(x) is.numeric(x)) # same as above, redundant code sapply(d1, is.numeric) # TRUE TRUE apply(d2, 2, is.numeric) # FALSE FALSE FALSE sapply(d2, is.numeric) # TRUE TRUE FALSE vQ Mark Heckmann wrote: > Hi R-users, > > I want to apply a function to each column of a data frame that is numeric. > Thus I tried to check it for each column first: > > >> apply(df, 2, function(x) is.numeric(x)) >> > > A60 A64 A66a A67 A71 A75a A80 > A85 A91 A95 A96 A97 A98 A99 > FALSE FALSE FALSE FALSE FALSE FALSE FALSE > FALSE FALSE FALSE FALSE FALSE FALSE FALSE > > I get only FALSE results although the variables are numeric. When I try the > following it works: > > >> is.numeric(df$A60) >> > [1] TRUE > > What am I doing wrong? > > ______________________________________________ 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.