[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