Sorry for vague question title, i couldn’t figure out something more specific.
I have 3×2 matrix c:
> c
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 2 3
It is important that ncol(c) == 2.
I also have matrix ind:
> ind
[,1] [2] [,3] [,4]
[1,] 2 2 2 1
[2,] 1 1 2 2
[3,] 2 2 2 1
It is important that nrow(c) == nrow(ind), and that the values of matrix ind are 1 and 2 (like column indices for each row of c)
What i want to get is matrix a with same dim as ind such that a[i,j] == c[i,ind[i,j]]:
> a
[,1] [2] [,3] [,4]
[1,] 2 2 2 1
[2,] 1 1 3 3
[3,] 3 3 3 2
I can do something similar in less comprehensive situations, for example if nrow(c) == 1 i’ll use apply:
> apply(c,2,function(x){return(matrix(x[ind], nrow(ind)))})
I know there is a way to iterate by 2 lists using mapply, but
1) i don’t know what’s the best way to represent matrix as list of rows
2) i fing this solution ugly
What is the best way to achieve what i descibed here?
Matrix indexing to the rescue!