r - Numeric Column in data.frame returning "num" with str() but not is.numeric() -


i have data.frame, d1, has 7 columns, 5th through 7th column supposed numeric:

str(d1[5]) 'data.frame':   871 obs. of  1 variable:  $ latest.assets..mns.: num  14008 1483 11524 1081 2742 ...   is.numeric(d1[5]) [1] false  as.numeric(d1[5]) error: (list) object cannot coerced type 'double' 

how can be? if str identifies numeric, how can not numeric? i'm importing csv.

> is.numeric_data.frame=function(x)all(sapply(x,is.numeric))  > is.numeric_data.frame(d1[[5]]) [1] true  

why

d1 list, hence d1[5] list of length 1, , in case contains data.frame. data frame, use d1[[5]].

even if data frame contains numeric data, isn't numeric itself:

> x = data.frame(1:5,6:10) > is.numeric(x) [1] false 

individual columns in data frame either numeric or not numeric. instance:

> z <- data.frame(1:5,letters[1:5])  > is.numeric(z[[1]]) [1] true > is.numeric(z[[2]]) [1] false 

if want know if columns in data frame numeric, can use all , sapply:

> sapply(z,is.numeric)     x1.5 letters.1.5.      true        false   > all(sapply(z,is.numeric)) [1] false  > all(sapply(x,is.numeric)) [1] true 

you can wrap in convenient function:

> is.numeric_data.frame=function(x)all(sapply(x,is.numeric))  > is.numeric_data.frame(d1[[5]]) [1] true  

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -