[R] Removing constants from a data frame

Petr Pikal petr.pikal at precheza.cz
Mon Sep 20 08:39:27 CEST 2004



On 17 Sep 2004 at 19:17, Kjetil Brinchmann Halvorsen wrote:

> 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 }
> 
> Kjetil halvorsen

Hi
Maybe this will do it

> fff<-function(a) if(is.numeric(a)) diff(range(a, na.rm=T))==0 else FALSE
> x[,!mapply(fff,x)]
  v1 v2 v4 v5
1  1  2  A  Z
2  2  4  B  Z
3  3 NA  C  Z
4  4  7  D  Z
>
Cheers
Petr



> 
> -- 
> 
> 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

Petr Pikal
petr.pikal at precheza.cz




More information about the R-help mailing list