I am just posting this to the list because someone else may one day waste an hour or so because s/he has unknowingly hit a partial match failure using "$". It's my folly that I did but I am surprised that options(warnPartialMatchDollar = TRUE) isn't the default setting.
Here's a bit of reproducible code that shows the challenge. #rm(list=ls()) ### BEWARE: me making sure environment was clean set.seed(12345) # get fully reproducible example nRows <- 100 Sample <- sample(0:1,nRows,replace=TRUE) data2 <- data.frame(cbind(1:nRows,Sample)) # create data frame table(data2$Samp) # call which silently achieves partial match data2$innoccuousname <- factor(data2$Samp,labels=c("Non-clinical","Clinical"),levels=0:1) str(data2$Samp) # all fine, no apparent destruction of the non-existent vector data2$Samp data2$SampFac <- factor(data2$Samp,labels=c("Non-clinical","Clinical"),levels=0:1) str(data2$Samp) # returns NULL because there is no longer a single partial match to "Samp" but no warning! str(data2$Sample) # but of course, data2$Sample is still there Because I had used "data2$Samp" all the way through a large file of R (markup) code and hadn't noticed that the variable names in the SPSS file I was reading in had changed from "Samp" to "Sample" I appeared to be destroying data2$Samp. I have now set options(warnPartialMatchDollar = TRUE) in my Rprofile.site file and am just posting this here in case it helps someone some day. Very best all, Chris [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.