[R] matrix indexing

Martin Lam tmlammail at yahoo.com
Thu Aug 18 14:32:28 CEST 2005


x <- array(1:20, dim = c(4, 5))
ind <- array(c(1:3, 3:1), dim = c(3, 2))

# instead of using ind (pairs of coordinates) for
getting the items in the matrix, you can convert it to
a list of single coordinates to point to the item in
the matrix:
# t = transpose
# nrow = get the number of rows
indices <- t((ind[,2]-1) * nrow(x) + ind[,1])

# remove the ones indicated by indices
# to get an item from y you can do y[value]
y <- x[-indices]

# you could transpose y, but I don't know if that's
what you want
y <- t(y)

Hope this helps,

Martin

--- toka tokas <tokkass at yahoo.com> wrote:

> Dear R-users,
> 
> I was wondering for the following:
> 
> Let 'x' be a matrix and 'ind' and indicator matrix,
> i.e.,
> 
> x <- array(1:20, dim = c(4, 5))
> ind <- array(c(1:3, 3:1), dim = c(3, 2))
> 
> I'd like to get (as a vector) the elements of 'x'
> which are not indexed by 'ind'. Since negative
> indices
> are not allowed in index matrices I thought of using
> something like:
> 
> x[ind] <- NA
> x[!is.na(x)]
> 
> but are there any more elegant solutions.
> 
> Thanks in advance,
> toka




More information about the R-help mailing list