On Tue, Oct 16, 2012 at 9:08 AM, siddu479 <onlyfordigitalst...@gmail.com> wrote: > Hi All, > > I have a data frame where nearly 10K columns of data, where most of them > have standard deviation( of all rows) as zero. > I want to exclude all the columns from the data frame and proceed to further > processing. > > I tried like blow. > *data <- read.csv("data.CSV", header=T) > > for(i in 2:ncol(data)) > if(sd(data[,i])==0){ > df[,i] <-NULL > } > * > where I have the data columns from 2:ncol, but getting the error "Error in > df[, i] <- NULL : object of type 'closure' is not subsettable" > > Can any one suggest the right method to accomplish this. >
A perfect example of why "df" is a bad function name. Here you are getting the function ( = closure, more or less) df, density function of the F distribution, instead of the uninitialized variable "df". Since the function can't be subsetted, you get the error. In fact, I think you really just want this one liner: !(apply(data, 2, sd) == 0) which can be used to subset. In the same vein as the df problem, data is also a bad function name (it's also a pre-defined function used for loading, surprise surprise!, data) but R is smart enough to keep them straight in this simple example. In your real script, however, I'd strongly suggest you change it. Cheers, Michael ______________________________________________ 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.