Thanks, Chuck. Very nice! :-)
Jay
On 12/10/07, Charles C. Berry <[EMAIL PROTECTED]> wrote:
>
> On Mon, 10 Dec 2007, G. Jay Kerns wrote:
>
> > Hello,
> >
> > I have been interested in setdiff() for data frames that operates
> > row-wise. I looked in the documentation, mailing lists, etc., and
> > didn't find exactly the right thing. Given data frames A, B with the
> > same columns, the goal is to extract the rows that are in A, but not
> > in B. Of course, one can usually do setdiff(rownames(A), rownames(B))
> > but that is cheating. :-)
> >
> > I played around a little bit and came up with
> >
> > setdiff.data.frame = function(A, B){
> > g <- function( y, B){
> > any( apply(B, 1, FUN = function(x)
> > identical(all.equal(x, y), TRUE) ) ) }
> > unique( A[ !apply(A, 1, FUN = function(t) g(t, B) ), ] )
> > }
> >
> > I am sure that somebody can do this a better/faster way... any ideas?
>
> setdiff.data.frame <-
> function(A,B) A[ !duplicated( rbind(B,A) )[ -seq_len(nrow(B))] , ]
>
> This ignores rownames(A) which may not be what is wanted in every case.
>
> HTH,
>
> Chuck
>
> > Any chance we could get a data.frame method for set.diff in future R
> > versions? (The notion of "set" is somewhat ambiguous with respect to
> > rows, columns, and entries in the data frame case.)
> >
> >
> > Jay
> >
> >
> > P.S. You can see what I'm looking for with
> >
> > A <- expand.grid( 1:3, 1:3 )
> > B <- A[ 2:5, ]
> > setdiff.data.frame(A,B)
> >
> >
> >
> >
> >
> > ***************************************************
> > G. Jay Kerns, Ph.D.
> > Assistant Professor / Statistics Coordinator
> > Department of Mathematics & Statistics
> > Youngstown State University
> > Youngstown, OH 44555-0002 USA
> > Office: 1035 Cushwa Hall
> > Phone: (330) 941-3310 Office (voice mail)
> > -3302 Department
> > -3170 FAX
> > E-mail: [EMAIL PROTECTED]
> > http://www.cc.ysu.edu/~gjkerns/
> >
> > ______________________________________________
> > [email protected] mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
> Charles C. Berry (858) 534-2098
> Dept of Family/Preventive
> Medicine
> E mailto:[EMAIL PROTECTED] UC San Diego
> http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
>
>
>
--
***************************************************
G. Jay Kerns, Ph.D.
Assistant Professor / Statistics Coordinator
Department of Mathematics & Statistics
Youngstown State University
Youngstown, OH 44555-0002 USA
Office: 1035 Cushwa Hall
Phone: (330) 941-3310 Office (voice mail)
-3302 Department
-3170 FAX
E-mail: [EMAIL PROTECTED]
http://www.cc.ysu.edu/~gjkerns/
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel