[R] Odp: set values in data.frame to NA conditional on another data.frame

Petr PIKAL petr.pikal at precheza.cz
Thu Jul 3 09:01:30 CEST 2008


Hi

is your data all numeric or all character? If yes you can transform it to 
matrix and then such setting shall be quite quick.

vec<-rnorm(6000*6000)
mat<-vec
dim(mat)<-c(6000,6000)
mat2<-mat
mat2[sample(1:6000, 500), sample(1:6000, 500)]<-NA
sum(is.na(mat2))
[1] 250000
> 500*500
[1] 250000
system.time(mat[is.na(mat2)]<-NA)
   user  system elapsed 
   0.61    0.11    0.72 
>
> sum(is.na(mat))
[1] 250000

Regards
Petr

r-help-bounces at r-project.org napsal dne 02.07.2008 23:17:44:

> Hello List,
> 
> Is there a faster way to set values in one data.frame equal to NA 
> conditional on the corresponding value in another data.frame? Currently 
> I am using:
>  > b[is.na(a)] <- NA
> where 'a' and 'b' are data.frames of equal size/dimensions, and 'a' 
> contains NAs but 'b' does not. This is extremely slow as is, as my 
> data.frames are about 6000 columns by 6000 rows in size.
> Are there any tricks to speed things up here?
> 
> Thank you in advance,
> 
> Carson
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list