抱歉,问题标题含糊不清,我想不出更具体的东西。
我有 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)我觉得这个解决方案很难看
实现我在这里描述的最佳方法是什么?