Actually, recycling makes the rep(NA,2) business unnecessary. Simply: dat1[dat1$x==1 & dat1$y==1,1:2] <- rep(NA,2)
##or with(dat1,{dat1[x==1 & y==1,1:2] <- NA;dat1}) will do it. -- Bert On Wed, Jun 6, 2012 at 10:21 PM, Bert Gunter <bgun...@gene.com> wrote: > Have you read "An Intro to R?" If not,please do so before posting > further. The way you are going about things makes me think you > haven't, but ... > > This **is** a slightly tricky application of indexing, if I understand > you correctly. Here are two essentially identical ways to do it, but > the second is a little trickier > > ## First >> dat1[dat1$x==1 & dat1$y==1,1:2] <- rep(NA,2) >> dat1 > x y fac > 1 <NA> <NA> A > 2 1 2 B > 3 1 3 A > 4 <NA> <NA> C > 5 1 2 A > 6 1 3 C > > ##Slightly trickier version using with() to avoid explicit extraction > from data frame > ## Reconstitute dat1 > >> dat1 > x y fac > 1 1 1 C > 2 1 2 C > 3 1 3 B > 4 1 1 B > 5 1 2 C > 6 1 3 B > > dat1 <- with(dat1,{dat1[x==1 & y==1,1:2] <- rep(NA,2); dat1}) >> dat1 > x y fac > 1 <NA> <NA> B > 2 1 2 A > 3 1 3 A > 4 <NA> <NA> C > 5 1 2 A > 6 1 3 B > > ## ?with for explanation > > -- Bert > > On Wed, Jun 6, 2012 at 8:58 PM, Daisy Englert Duursma > <daisy.duur...@gmail.com> wrote: >> Hello and thanks for helping. >> >> #some data >> L3 <- LETTERS[1:3] >> dat1 <- data.frame(cbind(x=1, y=rep(1:3,2), fac=sample(L3, 6, replace=TRUE))) >> >> >> #When x==1 and y==1 I want to replace the 1 values with NA >> >> #I can select the rows I want: >> dat2<-subset(dat1,x==1 & y==1) >> #replace the 1 with NA >> dat2$x<-rep(NA,nrow(dat2) >> dat2$y<-rep(NA,nrow(dat2) >> >> #select the other rows and rbind everything back together >> #This is where I get stuck >> >> #The end dataframe will look something like: >> >> x y fac >> NA NA B >> NA NA A >> 1 2 C >> 1 3 C >> 1 2 C >> 1 3 A >> >> #Is there a better way to do this where I do not need to subset >> perhaps using lapply? >> >> >> Thanks, >> Daisy >> >> -- >> Daisy Englert Duursma >> Department of Biological Sciences >> Room E8C156 >> Macquarie University, North Ryde, NSW 2109 >> Australia >> >> Tel +61 2 9850 9256 >> >> ______________________________________________ >> R-help@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. > > > > -- > > Bert Gunter > Genentech Nonclinical Biostatistics > > Internal Contact Info: > Phone: 467-7374 > Website: > http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm -- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm ______________________________________________ R-help@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.