Message-ID: <20164.60917.946391.189174@stat.math.ethz.ch>
Date: 2011-11-17T11:20:21Z
From: Martin Maechler
Subject: inaccuracy in man page for duplicated() + anyDuplicated() not working with MARGIN=0
In-Reply-To: <4EC4AC57.5030007@fhcrc.org>
> 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
Indeed. Thank you for pointing this out.
I'll definitely fix that part of the help file.
> 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]
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.
> May be it could be equivalent to:
> > anyDuplicated(as.vector(m))
> [1] 5
Yes, that's what will happen after I've committed my fixes.
Thank you very much, Herv?!
Martin
[...]
> --
> Herv? Pag?s
[...]
(*) having authored anyDuplicated()