efficiently diff two data frames
Dear all, What is the quickest and most efficient way to diff two data frames, so as to obtain a vector of indices (or logical) for rows/columns that differ in the two data frames? For example,
Xe <- head(mtcars) Xf <- head(mtcars) Xf[2:4,3:5] <- 55 all.equal(Xe, Xf)
[1] "Component 3: Mean relative difference: 0.6863118" [2] "Component 4: Mean relative difference: 0.4728435" [3] "Component 5: Mean relative difference: 14.23546" I could use all.equal(), but it only returns human readable info that cannot be easily used programmatically. It also gives no info on the rows. Another way would be to: require(prob)
setdiff(Xe, Xf)
mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 But again this doesn't return subsetting indices, nor any info on hte columns. Any suggestions on how to approach this? Regards , Liviu