[R] Removing constants from a data frame
Liaw, Andy
andy_liaw at merck.com
Mon Sep 20 12:22:33 CEST 2004
> From: Kjetil Brinchmann Halvorsen
>
> David Forrest wrote:
>
> >Suppose I have
> >
> >x<-data.frame(v1=1:4, v2=c(2,4,NA,7), v3=rep(1,4),
> > v4=LETTERS[1:4],v5=rep('Z',4))
> >
> >or a much larger frame, and I wish to test for and remove
> the constant
> >numeric columns.
> >
> >I made:
> >
> > is.constant<-function(x){identical(min(x),max(x))}
> >
> >and
> > apply(x,2,is.constant) # Works for numerics
> > x[,-which(apply(x,2,is.constant))]
> >
> >I'd really like to be able to delete the constant columns
> without losing
> >my non-numerics. Ignoring the character columns would be OK.
> >
> >Any suggestions?
> >
> >Dave
> >
> >
> what about defing is.constant as
> is.constant <- function(x) {
> if (is.numeric(x)) identical(min(x),
> max(x)) else
> FALSE }
identical() is probably not the safest thing to use:
> x <- c(1, 2, NA)
> is.constant(x)
[1] TRUE
For data such as c(1, 1, 1, NA), I should think the safest answer should be
NA, because one really doesn't know whether that last number is 1 or not.
Andy
> --
> Kjetil Halvorsen.
>
> Peace is the most effective weapon of mass construction.
> -- Mahdi Elmandjra
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
More information about the R-help
mailing list