[R] assign NA to rows by test on multiple columns of a data frame

Massimo Bressan massimo.bressan at arpa.veneto.it
Wed Nov 22 11:34:50 CET 2017



Given this data frame (a simplified, essential reproducible example) 




A<-c(8,7,10,1,5) 

A_flag<-c(10,0,1,0,2) 

B<-c(5,6,2,1,0) 

B_flag<-c(12,9,0,5,0) 




mydf<-data.frame(A, A_flag, B, B_flag) 




# this is my initial df 

mydf 




I want to get to this final situation 




i<-which(mydf$A_flag==0) 

mydf$A[i]<-NA 




ii<-which(mydf$B_flag==0) 

mydf$B[ii]<-NA 




# this is my final df 

mydf 




By considering that I have to perform this task in a data frame with many columns I’m wondering if there is a compact and effective way to get the final result with just one ‘sweep’ of the dataframe? 




I was thinking to the function apply or lapply but I can not properly conceive how to… 




any hint for that? 

	[[alternative HTML version deleted]]



More information about the R-help mailing list