jlfmssm wrote: > > Sorry, I didn't get it. > I made a simple example to explain what I want > >> x=c(1,2,4,4) >> y=c("A",1,2,"A") >> test<-as.data.frame(cbind(x,y)) >> test > x y > 1 1 A > 2 2 1 > 3 4 2 > 4 4 A >> test[test$x==4,]$y<-'B' > Warning message: > In `[<-.factor`(`*tmp*`, iseq, value = c("B", "B")) : > invalid factor level, NAs generated >> test > x y > 1 1 A > 2 2 1 > 3 4 <NA> > 4 4 <NA> > > actually, what I want is > >> test > x y > 1 1 A > 2 2 1 > 3 4 B > 4 4 B >
Try this x=c(1,2,4,4) y=c("A",1,2,"A") atest <- data.frame(x=x,y=y) str(atest) atest levels(atest$y)[4] <- 'B' atest[atest$x==4,]$y <- 'B' str(atest) atest This gives the following output > x=c(1,2,4,4) > y=c("A",1,2,"A") > atest <- data.frame(x=x,y=y) > str(atest) 'data.frame': 4 obs. of 2 variables: $ x: num 1 2 4 4 $ y: Factor w/ 3 levels "1","2","A": 3 1 2 3 > atest x y 1 1 A 2 2 1 3 4 2 4 4 A > levels(atest$y)[4] <- 'B' > atest[atest$x==4,]$y <- 'B' > str(atest) 'data.frame': 4 obs. of 2 variables: $ x: num 1 2 4 4 $ y: Factor w/ 4 levels "1","2","A","B": 3 1 4 4 > atest x y 1 1 A 2 2 1 3 4 B 4 4 B Berend -- View this message in context: http://www.nabble.com/a-question-about-replacing-a-column-that-is-factor-tp24654365p24658796.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.