s-news
[Top] [All Lists]

Re: Different behaviour of unique(), R vs. Splus.

To: "'Rolf Turner'" <rolf@math.unb.ca>, r-help@stat.math.ethz.ch
Subject: Re: Different behaviour of unique(), R vs. Splus.
From: "Liaw, Andy" <andy_liaw@merck.com>
Date: Tue, 29 Jun 2004 13:41:41 -0400
Cc: s-news@wubios.wustl.edu
The source of the incompatibility:

In S-PLUS 6.2:

> methods("unique")
               splus            splus          menu                 splus 
 "unique.data.frame" "unique.default" "unique.name" "unique.rowcol.names"


In R-1.9.1:

> methods("unique")
[1] unique.array      unique.data.frame unique.default    unique.matrix    


Unless there's some sort of coordination (or even just separate effort) on
either/both R Core and Insightful developers to make sure there's agreement
on what methods to provide in the base code, such problem can only get
worse, not better, I guess.

Best,
Andy


> From: Rolf Turner
> 
> Apologies for the cross-posting, but I thought this snippet of info
> might be vaguely interesting to both lists.
> 
> I did a ***brief*** search to see if this issue had previously been
> discussed and found nothing.  So I thought I'd tell the list about a
> difference in behaviour between unique() in R and unique() in Splus
> which bit me just now.
> 
> I was trying to convert a package from Splus to R and got nonsense
> answers in R.  Turned out that within the bowels of the package I was
> doing something like
> 
>       u <- unique(y)
> 
> where y was a matrix of integer values.  In Splus this gives a
> (short) vector of unique values.  In R it gives a matrix of the same
> dimensionality as y, except that any duplicated rows are eliminated.
> 
> (This looks like being very useful --- once you know about it.  And
> it was probably mentioned in the R release notes at one time, but, as
> Dr. Hook says, ``I was stoned and I missed it.'')
> 
> E.g.
>       set.seed(42)
>       m <- matrix(sample(1:5,20,TRUE),5,4)
>       u <- unique(m)
> 
> In R ``u'' is identical to ``m''; in Splus ``u'' is vector (of
> length 5).
> 
> To get what I want in R I simply need to do
> 
>       u <- unique(as.vector(y))
> 
> Simple, once you know.  Took me a devil of a long time to track down
> what was going wrong, but!
> 
>                                       cheers,
> 
>                                               Rolf Turner
> --------------------------------------------------------------------
> This message was distributed by s-news@lists.biostat.wustl.edu.  To
> unsubscribe send e-mail to s-news-request@lists.biostat.wustl.edu with
> the BODY of the message:  unsubscribe s-news
> 
> 


------------------------------------------------------------------------------
Notice:  This e-mail message, together with any attachments, contains 
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New 
Jersey, USA 08889), and/or its affiliates (which may be known outside the 
United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as 
Banyu) that may be confidential, proprietary copyrighted and/or legally 
privileged. It is intended solely for the use of the individual or entity named 
on this message.  If you are not the intended recipient, and have received this 
message in error, please notify us immediately by reply e-mail and then delete 
it from your system.
------------------------------------------------------------------------------

<Prev in Thread] Current Thread [Next in Thread>