如何按 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 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.