This puzzle started with an SO posting where the questioner showed output from a dataframe that had been indexed with a matrix. The output appeared to show that numeric values had been coerced to character. Once I got a reproducible example I discovered that the print output was the problem and that the actual values had not been coerced. I've created a much smaller test case and it appears from the testing below that a matrix indexed output from a dataframe with mixed numeric and character types will be printed as character even if none of the values indexed are character:
> dat <- setNames( as.data.frame( matrix(1:12, ncol=4) ), LETTERS[1:4]) > dat A B C D 1 1 4 7 10 2 2 5 8 11 3 3 6 9 12 > dat[2,4]<-NA > dat[3,3]<-NA > ng <- which(is.na(dat), arr.ind=TRUE) > ng row col [1,] 3 3 [2,] 2 4 > dat[ng] <- 20 > dat[ng] [1] 20 20 That was as expected. Now repeat the process with a dataframe of mixed types. > dat[2,4]<-NA > dat[3,3]<-NA > dat[,1]<- "a" > dat A B C D 1 a 4 7 10 2 a 5 8 NA 3 a 6 NA 12 > dat[ng] <- 20 > dat[ng] [1] "20" "20" Quoted print output was not what I was expecting. -- David Winsemius Alameda, CA, USA ______________________________________________ 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.