抱歉,问题标题含糊不清,我想不出更具体的东西。
我有 3x2 矩阵c
:
> c
[,1] [,2]
[1,] 1 2
[2,] 1 3
[3,] 2 3
重要的是ncol(c) == 2
。
我也有矩阵ind
:
> ind
[,1] [2] [,3] [,4]
[1,] 2 2 2 1
[2,] 1 1 2 2
[3,] 2 2 2 1
重要的是nrow(c) == nrow(ind)
,矩阵的值ind
是 1 和 2(就像 c 的每一行的列索引)
我想要得到的是a
具有相同暗淡ind
的矩阵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
我可以在不太全面的情况下做类似的事情,例如,如果nrow(c) == 1
我将使用apply
:
> apply(c,2,function(x){return(matrix(x[ind], nrow(ind)))})
我知道有一种方法可以使用 mapply 迭代 2 个列表,但是
1)我不知道将矩阵表示为行列表的最佳方法是什么 2)我觉得这个解决方案很难看
实现我在这里描述的最佳方法是什么?