[R] Check if data frame column is numeric
Wacek Kusnierczyk
Waclaw.Marcin.Kusnierczyk at idi.ntnu.no
Tue Dec 16 19:01:47 CET 2008
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?
>
>
More information about the R-help
mailing list