首页 > 解决方案 > 将矩阵的一部分乘以某个数

问题描述

我有一个矩阵,我想将 2 乘以矩阵中介于 10 和 20 之间的数字,并乘以 3 乘以矩阵中介于 30 和 40 之间的数字,其他数字保持不变

例如我有两个矩阵:

Var1   Var2  Var3
  20    40    50
  25    5      6
  20    13    45
  3     8     100

最后,我想得到这个矩阵

 Var1   Var2  Var3
  40     120   50
  25      5    6 
  40      26   45  
  3       8    100

标签: rmatrix

解决方案


您可以apply将函数ifelse应用于要在其中乘以值的列:

mat[,1:2] <- t(apply(mat[,1:2], 1, function(x) ifelse(x >= 20 & x <=30, x*2,
                                                      ifelse(x >= 30 & x <=40, x*3, x))))

结果:

mat
     Var1 Var2 Var3
[1,]   40  120   50
[2,]   50    5    6
[3,]   40   13   45
[4,]    3    8  100

数据:

mat <- structure(c(20L, 25L, 20L, 3L, 40L, 5L, 13L, 8L, 50L, 6L, 45L, 
                 100L), .Dim = 4:3, .Dimnames = list(NULL, c("Var1", "Var2", "Var3"
                 )))

推荐阅读