如何除R中不包括0的每行中的最大值划分data.table对象行?
要将行值除以Rdata.table对象中不包括0的行最大值,我们可以按照以下步骤操作-
首先,创建一个data.table对象。
然后,使用apply函数和ifelse函数将data.table对象行值除以行最大值(不包括0)。
创建data.table对象
例子
让我们创建一个data.table对象,如下所示-
> library(data.table) > x<-sample(0:5,25,replace=TRUE) > y<-sample(0:5,25,replace=TRUE) > z<-sample(0:5,25,replace=TRUE) > DT<-data.table(x,y,z) > DT
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
输出
x y z
1: 2 0 3
2: 2 3 2
3: 0 1 3
4: 0 3 1
5: 1 5 2
6: 1 3 0
7: 4 5 2
8: 0 1 4
9: 4 2 0
10: 3 2 4
11: 1 4 3
12: 2 5 2
13: 4 2 0
14: 1 1 5
15: 1 2 4
16: 0 3 0
17: 4 1 1
18: 5 0 3
19: 2 0 4
20: 4 5 3
21: 4 0 3
22: 3 0 1
23: 2 1 5
24: 0 1 2
25: 2 1 1
x y z将data.table对象行值除以行最大值(不包括0)
例子
使用apply函数将DT的行值除以行最大值(不包括0)-
> library(data.table) > x<-sample(0:5,25,replace=TRUE) > y<-sample(0:5,25,replace=TRUE) > z<-sample(0:5,25,replace=TRUE) > DT<-data.table(x,y,z) > DT_new<-t(apply(DT,1, function(x) if (0 %in% x) x else x/max(x))) > DT_new
输出
x y z [1,] 2.0000000 0.00 3.0000000 [2,] 0.6666667 1.00 0.6666667 [3,] 0.0000000 1.00 3.0000000 [4,] 0.0000000 3.00 1.0000000 [5,] 0.2000000 1.00 0.4000000 [6,] 1.0000000 3.00 0.0000000 [7,] 0.8000000 1.00 0.4000000 [8,] 0.0000000 1.00 4.0000000 [9,] 4.0000000 2.00 0.0000000 [10,] 0.7500000 0.50 1.0000000 [11,] 0.2500000 1.00 0.7500000 [12,] 0.4000000 1.00 0.4000000 [13,] 4.0000000 2.00 0.0000000 [14,] 0.2000000 0.20 1.0000000 [15,] 0.2500000 0.50 1.0000000 [16,] 0.0000000 3.00 0.0000000 [17,] 1.0000000 0.25 0.2500000 [18,] 5.0000000 0.00 3.0000000 [19,] 2.0000000 0.00 4.0000000 [20,] 0.8000000 1.00 0.6000000 [21,] 4.0000000 0.00 3.0000000 [22,] 3.0000000 0.00 1.0000000 [23,] 0.4000000 0.20 1.0000000 [24,] 0.0000000 1.00 2.0000000 [25,] 1.0000000 0.50 0.5000000