[R] function to populate a matrix based on a lookup to another matrix ?
Uwe Ligges
ligges at statistik.uni-dortmund.de
Sat May 31 17:58:27 CEST 2003
peter leonard wrote:
> Hi,
>
> This is a beginner R question.
>
> I have a 4x4 matrix named 'lookup' with the following values:
>
> 1 2 3 4
> 1 0.000000 2.828427 5.656854 8.485281
> 2 2.828427 0.000000 2.828427 5.656854
> 3 5.656854 2.828427 0.000000 2.828427
> 4 8.485281 5.656854 2.828427 0.000000
>
> I then create a new empty matrix named 'dd' with specfic row and col
> names :
>
> 1 3 4 3 3 1
> 1 NA NA NA NA NA NA
> 2 NA NA NA NA NA NA
> 3 NA NA NA NA NA NA
> 4 NA NA NA NA NA NA
> 3 NA NA NA NA NA NA
> 2 NA NA NA NA NA NA
> 1 NA NA NA NA NA NA
>
> I want to be able populate the cells in 'dd' using 'lookup' based on the
> specified rownames and colnames of 'dd'. For example, the cell in 'dd'
> where the rowname =2 and the colname = 1 should be assigned the value
> 2.828427 .
>
> I've tried several ways of doing this with the apply function but
> without success. I can do it with a for loop but I want to avoid that
> for efficiency reasons.
>
> After running the function, as an example, the first column of 'dd'
> should look like this :
>
> 1
> 1 0.000000000
> 2 2.828427125
> 3 5.656854249
> 4 8.485281374
> 3 5.656854249
> 2 2.828427125
> 1 0.000000000
>
> Can anyone please help me identify the required function or an
> alternative way of achieving the same result? Hopefully this is simple
> and I'm just not seeing it.
>
> Thanks
> Peter
>
dd <- lookup[as.numeric(rownames(dd)), as.numeric(colnames(dd))]
and after that restoring dd's row- and colnames.
Anyway, I guess you don't need to create "dd". Just calculate those
rownames (rn) and colnames (cn) as integers. Then the following works:
dd <- lookup[rn, cn]
Uwe Ligges
More information about the R-help
mailing list