On Apr 8, 2010, at 4:03 PM, Jun Shen wrote:
David,
all.equal() only tells how many mismatches there are including
missing values but it doesn't tell me the location of each mismatch.
Yes, I noticed that after further testing. I agree Charles' solution
is more informative and I wonder if it could be added to the
functionality of all.equal (which purports to tell the user where
objects differ)?
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
David Winsemius, MD
West Hartford, CT
______________________________________________
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.