Try this:

y$values <- diag(x[y$ltrs, y$mnths])

On Thu, Jun 25, 2009 at 11:02 AM, Rama Ramakrishnan <r...@alum.mit.edu>wrote:

> Dear R-Users,
> I need to lookup values from a 2-d table using the row names and column
> names as indices. I was wondering if there's a way to do this without an
> explicit loop.
>
> Example:
> #x is the 2-d table that holds the values
>
> x <- matrix(rnorm(26*12),nrow=26)
>
> rownames(x) <- letters
>
> colnames(x) <- month.name
>
>
> #y is a data frame that has the "keys" I want to use as indices into x
>
> y <- data.frame(ltrs=sample(letters,5),mnths=sample(month.name
> ,5),values=0)
>
>
> #I want to fill in the "values" column using the "ltrs" and "mnths" columns
> as keys to look up
>
> # the associated value from x
>
> #One way to do this is with a FOR loop
>
> for (i in 1:nrow(y)) {y$val[i] <- x[y$ltrs[i],y$mnths[i]]}
>
>
> My question: Is there a more efficient way (e.g., one without using an
> explicit loop) to do this?
>
>
> Thanks in advance!
>
>
> -Rama Ramakrishnan
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to