[R] how to get column/row info from a dist object?
Gabor Grothendieck
ggrothendieck at gmail.com
Sat May 12 04:03:53 CEST 2007
On 5/11/07, Pedro Mardones <mardones.p at gmail.com> wrote:
> Dear R users;
>
> Is it possible to get the row and column number of a particular entry
> in a dist object?
>
> Let's say that I want to find the position of the value 1.1837 (the
> last entry on the dist object below), that is [6,3]. Can I get those
> values without transforming the object to a matrix?, i.e. working with
> the dist object only.
>
> 1 2 3
> 2 0.23935864
> 3 0.56655914 0.71923104
> 4 0.15272561 0.37926989 0.43931332
> 5 0.17728654 0.13355685 0.73025495
> 6 0.61783536 0.52055379 1.18374889
>
> Thanks for any idea
> PM
Try this.
row.col <- function(dd, value) {
if (length(value) == 1) {
g <- grep(value, dd)
N <- attr(dd, "Size")
idx <- cumsum(seq(N-1, 1))
ic <- sum(g > idx) + 1
ir <- g - c(0,idx)[ic] + ic
c(row = ir, col = ic)
} else sapply(value, row.col, dd = dd)
}
# test
set.seed(1)
x <- matrix(rnorm(100), nrow=5)
dd <- dist(x)
dd
dd[7]
row.col(dd, dd[7])
row.col(dd, unlist(dd))
More information about the R-help
mailing list