David, all.equal() only tells how many mismatches there are including missing values but it doesn't tell me the location of each mismatch.
For example, if I have one NA mismatch and three numerical mismatches, all.equal(a,b) gives [1] "Component 2: 'is.NA' value mismatch: 1 in current 0 in target" [2] "Component 3: 3 string mismatches" This only tells the missing value mismatch is in the second column (component) and 3 numerical mismatches in the third column. But no row information which(mapply(identical,unlist(a),unlist(b))==FALSE) gives TIME5 DV1 DV2 DV17 85 161 162 177 It tells me exactly which columns and rows to have the mismatches. In this case is column "TIME" row 5 and column "DV" rows 1, 2 and 17. You can ignore the serial numbers that followed. Jun On Thu, Apr 8, 2010 at 1:58 PM, David Winsemius <dwinsem...@comcast.net>wrote: > > On Apr 8, 2010, at 1:34 PM, Jun Shen wrote: > > David, >> >> Thanks for the suggestion. Now I have worked out a general solution. >> >> Assume "a" and "b" are two data frames with same dimensions >> >> 1. Call identical(a,b) to get an overall assessment. If you get a FALSE >> 2. Call which(mapply(identical,unlist(a),unlist(b))==FALSE), you will get >> a result like >> TIME5 >> 85 >> which means, the row 5 and the column with name "TIME" is different. This >> also works for missing values. Thanks for everyone. >> > > Looks that all.equal is already set up to provide such a service: > > > all.equal(df1,df2) > [1] "Component 1: 'is.NA' value mismatch: 1 in current 0 in target" > > I was under the misimpression that all.equal was for approximate equality > of numeric values but that only appears to be part of its design. > > -- > David. > > > >> Jun Shen from Millipore >> >> On Thu, Apr 8, 2010 at 9:08 AM, David Winsemius <dwinsem...@comcast.net> >> wrote: >> >> On Apr 8, 2010, at 9:47 AM, Jun Shen wrote: >> >> Dear David, Erik and Charles, >> >> Thank you for your input. Both mapply() and which() can do the job. Just >> one >> exception. If there is a missing value as NA in the data frame "a" and a >> data point (either numerical or character) in the corresponding position >> of >> "b", then mapply() only returns NA for that position rather than "FALSE", >> and which() cannot pick up that position either. Thanks again. >> >> >> You seem to have changed the programming challenge from identification to >> replicating identical(). If so then you can get closer with wrapping >> isTRUE(all() around the mapply("==" , attributes( ...), ...) step, and >> wrap the "==" call in isTRUE(all(.)) >> >> > isTRUE(all(mapply("==", df1, df2)) ) >> [1] FALSE since all(c(NA, TRUE, TRUE)) == NA and isTRUE(NA) == FALSE >> >> -- >> David. >> >> >> >> >> Jun >> >> On Wed, Apr 7, 2010 at 10:46 PM, Charles C. Berry <cbe...@tajo.ucsd.edu >> >wrote: >> >> On Wed, 7 Apr 2010, Jun Shen wrote: >> >> Dear all, >> >> I understand identical (a,b) will tell me if a and b are exactly the same >> or >> not. But what if they are different, is there anyway to tell which >> element(s) are different? Thanks. >> >> >> which( a != b, arr.ind = TRUE) >> >> HTH, >> >> Chuck >> >> >> Jun >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. >> >> >> Charles C. Berry (858) 534-2098 >> Dept of Family/Preventive >> Medicine >> E mailto:cbe...@tajo.ucsd.edu UC San Diego >> http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego >> 92093-0901 >> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. >> >> David Winsemius, MD >> West Hartford, CT >> >> >> > David Winsemius, MD > West Hartford, CT > > [[alternative HTML version deleted]] ______________________________________________ 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.