[R] How do I tell whether two vectors are identical?
Łukasz Ręcławowicz
lukasz.reclawowicz at gmail.com
Wed Oct 13 09:26:23 CEST 2010
> benchmark(
+ all_eq = {isTRUE(all.equal.numeric(x,y))},
+ dfrm = {compare<-data.frame(id<-seq(1,43e3,1),x,y);
+ compare$id[compare$x!=compare$y]},
+ int = {(compare$x!=compare$y)},
+ slf = {differences<-compare$id[compare$x!=compare$y]},
+ replications=1000)
test replications elapsed relative user.self sys.self
1 all_eq 1000 14.61 11.068182 12.59 0.02
2 dfrm 1000 27.08 20.515152 23.38 0.00
3 int 1000 1.32 1.000000 1.20 0.00
4 slf 1000 3.45 2.613636 2.91 0.00
Because:
a) in many real cases data frame may exist, so you create it only once
b) loop was "unfair" ;)
c) my approach gives an information about "the indices of positions at which
the vectors differ"
Time of "evaluation of differences" is also mesured, not only
assignment to vector.
Summary:
If you already got a data frame, slf method can be a few times faster.
If you don't have it, and you only need to know are they differ as a
whole check by all_eq. It depends on needs and stored format.
W dniu 13 października 2010 00:16 użytkownik David Winsemius
<dwinsemius at comcast.net> napisał:
> And as a result you have chosen not to include the creation of the
> data.frame inside your loop.
>
> David Winsemius, MD
> West Hartford, CT
--
Miłego dnia
More information about the R-help
mailing list