[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