矩阵内的计算,内部参考固定在R中矩阵内的列上

矩阵内的计算,内部参考固定在R中矩阵内的列上,r,matrix,calculated-columns,R,Matrix,Calculated Columns,我有一个矩阵,我想对矩阵中的每一个数字进行计算,这样我就可以得到另一个只有计算结果才具有相同维数的矩阵。这应该很容易,但等式的一部分取决于我访问的列,因为我需要对该列中第[3,]行的数字进行内部引用 我想应用的公式是: 输出矩阵值=给定位置的输入矩阵值+(1-(在[3]处的矩阵值,与输入矩阵值在同一列中)) 例如,对于矩阵中的(1,1),计算将为1+(1-3) 对于矩阵中的位置(1,2),计算值为5+(1-7) 我试过这样做: [,1] [,2] [,3] [1,] -1 -

我有一个矩阵,我想对矩阵中的每一个数字进行计算,这样我就可以得到另一个只有计算结果才具有相同维数的矩阵。这应该很容易,但等式的一部分取决于我访问的列,因为我需要对该列中第[3,]行的数字进行内部引用

我想应用的公式是:
输出矩阵值=给定位置的输入矩阵值+(1-(在[3]处的矩阵值,与输入矩阵值在同一列中))

例如,对于矩阵中的(1,1),计算将为1+(1-3)

对于矩阵中的位置(1,2),计算值为5+(1-7)

我试过这样做:

     [,1] [,2] [,3]
[1,]    -1   -1  -1
[2,]    0    0   0
[3,]    1    1   1
[4,]    2    2   2
output_matrix<-apply(input_matrix,c(1,2), function(x) x+(1-(input_matrix[3,])))

output\u matrix我认为这应该适合您:

apply(input_matrix, margin = 2, function(x) x + (1 - x[3]))
     [,1] [,2] [,3]
[1,]   -1   -1   -1
[2,]    0    0    0
[3,]    1    1    1
[4,]    2    2    2

我认为这应该适合你:

apply(input_matrix, margin = 2, function(x) x + (1 - x[3]))
     [,1] [,2] [,3]
[1,]   -1   -1   -1
[2,]    0    0    0
[3,]    1    1    1
[4,]    2    2    2

我们也可以用矢量化的方式来实现

input_matrix + (1 - input_matrix[3,][col(input_matrix)])
#     [,1] [,2] [,3]
#[1,]   -1   -1   -1
#[2,]    0    0    0
#[3,]    1    1    1
#[4,]    2    2    2

我们也可以用矢量化的方式来实现

input_matrix + (1 - input_matrix[3,][col(input_matrix)])
#     [,1] [,2] [,3]
#[1,]   -1   -1   -1
#[2,]    0    0    0
#[3,]    1    1    1
#[4,]    2    2    2

这工作做得很好!非常感谢你!这工作做得很好!非常感谢你!