Skip to content

inaccuracy in man page for duplicated() + anyDuplicated() not working with MARGIN=0

3 messages · Martin Maechler, Hervé Pagès

#
Hi,

In man page for duplicated:

   Value:

      ?duplicated()?: For a vector input, a logical vector of the same
      length as ?x?.  For a data frame, a logical vector with one
      element for each row.  For a matrix or array, a logical array with
      the same dimensions and dimnames.

When 'x' is a matrix or array, the returned value is NOT a logical
array:

   > m <- matrix(c(3,2,7,6,2,7), nrow=3)
   > m
        [,1] [,2]
   [1,]    3    6
   [2,]    2    2
   [3,]    7    7
   > duplicated(m)
   [1] FALSE FALSE FALSE

Only if MARGIN=0 it seems:

   > duplicated(m, MARGIN=0)
         [,1]  [,2]
   [1,] FALSE FALSE
   [2,] FALSE  TRUE
   [3,] FALSE  TRUE

Also, any reason why this doesn't work?

   > anyDuplicated(m, MARGIN=0)
   Error in dim(newX) <- c(prod(d.call), d2) :
     dims [product 1] do not match the length of object [6]

May be it could be equivalent to:

   > anyDuplicated(as.vector(m))
   [1] 5

Thanks,
H.
#
Indeed. Thank you for pointing this out.
I'll definitely fix that part of the help file.
well, because the R core colleague enhanced duplicated.array()
to work with MARGIN 0 (and similar cases) did not
update the parallel code in anyDuplicated.array() correspondingly.
Yes, that's what will happen after I've committed my fixes.

Thank you very much, Herv?!
Martin

[...]
[...]

(*) having authored anyDuplicated()
#
Sounds good. Thanks Martin!  H.
On 11-11-17 03:20 AM, Martin Maechler wrote: