Muenchen, Robert A (Bob) wrote: > Hi All, > > I'm fiddling with an program to read a text file containing periods that > SAS uses for missing values. I know that if I had the original SAS data > set instead of a text file, R would handle this conversion for me. > > Data frames do not allow missing values in their indices but vectors do. > Why is that? A search of the error message points out the problem and > solution but not why they differ. A simplified program that demonstrates > the issue is below. > > Thanks, > Bob > > # Here's a data frame that has both periods and NAs. > # I want sex to remain character for now. > > sex=c("m","f",".",NA) > x=c(1,2,3,NA) > myDF <- data.frame(sex,x,stringsAsFactors=F) > rm(sex,x) > myDF > > # Substituting NA into data frame does not work > # due to NAs in the indices. The error message is: > # missing values are not allowed in subscripted assignments of data > frames > > myDF[ myDF$sex==".", "sex" ] <- NA > myDF > Hi Bob, What happens is that you don't get FALSE when you ask if something==NA, you get NA. However, if you use the "which" function, it cleans up the NAs for you and the result of that should do what you want.
myDF[which(myDF$sex=="."),"sex"]<-NA Jim ______________________________________________ R-help@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 and provide commented, minimal, self-contained, reproducible code.