如何按 R 中每个行中不包括 0 的最大值划分矩阵行?


若要在不包括 0 的情况下按 R 中每个行的最大值划分矩阵行值,我们可以按照以下步骤操作:

  • 首先,创建一个矩阵。
  • 然后,使用 apply 函数和 if else 函数通过不包括 0 的行最大值来划分矩阵行值。

创建矩阵

我们创建一个如下所示的矩阵:

 实时演示

M<-matrix(rpois(75,1),ncol=3)
M

执行上述脚本时,将生成如下输(由于随机处理,此输在系统中有所不同):

   [,1] [,2] [,3]
[1,] 2    0    1
[2,] 1    2    0
[3,] 4    1    1
[4,] 2    1    0
[5,] 1    2    0
[6,] 0    2    0
[7,] 0    2    1
[8,] 2    1    0
[9,] 3    1    1
[10,] 1   2    1
[11,] 1   3    0
[12,] 1   2    0
[13,] 1   1    0
[14,] 0   1    1
[15,] 0   1    0
[16,] 2   1    1
[17,] 1   0    1
[18,] 0   1    1
[19,] 1   1    0
[20,] 0   0    2
[21,] 0   1    2
[22,] 1   1    0
[23,] 0   2    3
[24,] 2   0    1
[25,] 0   2    0

按不包括 0 的行最大值划分矩阵行值

使用 apply 函数对 M 的行值按不包括 0 的行最大值进行划分:

 实时演示

M<-matrix(rpois(75,1),ncol=3)
M_new<-t(apply(M,1, function(x) if (0 %in% x) x else x/max(x)))
M_new

输出

      [,1]   [,2]     [,3]
[1,]  2.0 0.0000000 1.0000000
[2,]  1.0 2.0000000 0.0000000
[3,]  1.0 0.2500000 0.2500000
[4,]  2.0 1.0000000 0.0000000
[5,]  1.0 2.0000000 0.0000000
[6,]  0.0 2.0000000 0.0000000
[7,]  0.0 2.0000000 1.0000000
[8,]  2.0 1.0000000 0.0000000
[9,]  1.0 0.3333333 0.3333333
[10,] 0.5 1.0000000 0.5000000
[11,] 1.0 3.0000000 0.0000000
[12,] 1.0 2.0000000 0.0000000
[13,] 1.0 1.0000000 0.0000000
[14,] 0.0 1.0000000 1.0000000
[15,] 0.0 1.0000000 0.0000000
[16,] 1.0 0.5000000 0.5000000
[17,] 1.0 0.0000000 1.0000000
[18,] 0.0 1.0000000 1.0000000
[19,] 1.0 1.0000000 0.0000000
[20,] 0.0 0.0000000 2.0000000
[21,] 0.0 1.0000000 2.0000000
[22,] 1.0 1.0000000 0.0000000
[23,] 0.0 2.0000000 3.0000000
[24,] 2.0 0.0000000 1.0000000
[25,] 0.0 2.0000000 0.0000000

更新日期:2021 年 8 月 14 日

237 次浏览

开启您的 职业生涯

完成课程获得认证

开始
广告