[R] Removing constants from a data frame

Kjetil Brinchmann Halvorsen kjetil at acelerate.com
Sat Sep 18 01:17:21 CEST 2004

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))}
>   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?
what about defing is.constant as
is.constant <-  function(x) {
                     if (is.numeric(x))  identical(min(x), max(x)) else 

Kjetil halvorsen


Kjetil Halvorsen.

Peace is the most effective weapon of mass construction.
               --  Mahdi Elmandjra

More information about the R-help mailing list