如何按顺序将向量值与 R 中的 data.table 对象的列相乘?
要将向量值与data.tableR中的对象列按顺序相乘,我们可以按照以下步骤操作:-
首先,创建一个data.table。
然后,创建一个向量。
之后,使用t函数进行转置和乘号*将向量值与data.table对象列按顺序相乘。
示例1
创建data.table对象
让我们创建一个data.table对象,如下所示-
library(data.table) var1<-sample(1:10,25,replace=TRUE) var2<-sample(1:10,25,replace=TRUE) var3<-sample(1:10,25,replace=TRUE) DT1<-data.table(var1,var2,var3) DT1输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
var1 var2 var3 1: 9 8 4 2: 2 8 2 3: 7 8 10 4: 6 7 10 5: 2 5 9 6: 4 9 8 7: 8 1 6 8: 3 9 9 9: 10 2 4 10: 5 7 8 11: 2 5 7 12: 10 6 2 13: 9 3 9 14: 8 3 10 15: 4 3 9 16: 2 6 4 17: 4 10 4 18: 10 6 5 19: 2 9 5 20: 9 9 5 21: 7 8 1 22: 5 3 5 23: 6 10 4 24: 5 6 10 25: 2 1 5 var1 var2 var3
创建向量
让我们创建一个如下所示的向量-
v1<-c(10,10,10) v1输出结果
[1] 10 10 10
将向量值与data.table对象列按顺序相乘
使用t函数进行转置和乘号*将v1值与data.table对象DT1的列按顺序相乘,如下所示-
library(data.table) var1<-sample(1:10,25,replace=TRUE) var2<-sample(1:10,25,replace=TRUE) var3<-sample(1:10,25,replace=TRUE) DT1<-data.table(var1,var2,var3) v1<-c(10,10,10) t(t(DT1)*v1)输出结果
var1 var2 var3 [1,] 90 80 40 [2,] 20 80 20 [3,] 70 80 100 [4,] 60 70 100 [5,] 20 50 90 [6,] 40 90 80 [7,] 80 10 60 [8,] 30 90 90 [9,] 100 20 40 [10,] 50 70 80 [11,] 20 50 70 [12,] 100 60 20 [13,] 90 30 90 [14,] 80 30 100 [15,] 40 30 90 [16,] 20 60 40 [17,] 40 100 40 [18,] 100 60 50 [19,] 20 90 50 [20,] 90 90 50 [21,] 70 80 10 [22,] 50 30 50 [23,] 60 100 40 [24,] 50 60 100 [25,] 20 10 50
示例2
创建data.table对象
让我们创建一个data.table对象,如下所示-
library(data.table) x<-sample(1:50,25) y<-sample(1:50,25) z<-sample(1:50,25) DT2<-data.table(x,y,z) DT2输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
x y z 1: 3 33 8 2 35 25 43 3: 9 22 36 4: 17 26 27 5: 32 7 29 6: 4 23 13 7: 31 5 37 8: 1 20 41 9: 50 17 20 10: 37 30 25 11: 44 10 4 12: 43 42 42 13: 2 18 3 14: 33 37 22 15: 36 32 15 16: 49 2 26 17: 39 48 33 18: 23 24 11 19: 26 29 34 20: 48 8 14 21: 40 35 9 22: 22 36 1 23: 12 14 40 24: 19 12 10 25: 13 9 7 x y z
创建向量
让我们创建一个如下所示的向量-
v2<-c(1,0.5,2) v2输出结果
[1] 1.0 0.5 2.0
将向量值与data.table对象列 按顺序相乘
使用t函数进行转置和乘号*将v2值与data.table对象DT2的列按顺序相乘,如下所示-
library(data.table) x<-sample(1:50,25) y<-sample(1:50,25) z<-sample(1:50,25) DT2<-data.table(x,y,z) v2<-c(1,0.5,2) t(t(DT2)*v2)输出结果
x y z [1,] 3 16.5 16 [2,] 35 12.5 86 [3,] 9 11.0 72 [4,] 17 13.0 54 [5,] 32 3.5 58 [6,] 4 11.5 26 [7,] 31 2.5 74 [8,] 1 10.0 82 [9,] 50 8.5 40 [10,] 37 15.0 50 [11,] 44 5.0 8 [12,] 43 21.0 84 [13,] 2 9.0 6 [14,] 33 18.5 44 [15,] 36 16.0 30 [16,] 49 1.0 52 [17,] 39 24.0 66 [18,] 23 12.0 22 [19,] 26 14.5 68 [20,] 48 4.0 28 [21,] 40 17.5 18 [22,] 22 18.0 2 [23,] 12 7.0 80 [24,] 19 6.0 20 [25,] 13 4.5 14