[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