如何在 R 中将 data.table 对象中的对应行值与单行 data.table 对象相乘?

r programmingserver side programmingprogramming更新于 2025/4/8 3:07:17

要在 R 中将多行 data.table 对象中的行值与单行 data.table 对象相乘,我们可以按照以下步骤操作 −

  • 首先,创建一个多行 data.table 对象和一个单行 data.table 对象。

  • 然后,使用 mapply 函数将这些对象中的行值相乘。

示例

创建第一个 data.table 对象

让我们创建一个如下所示的 data.table 对象−

library(data.table)
x1<-sample(1:10,25,replace=TRUE)
x2<-sample(1:10,25,replace=TRUE)
DT1<-data.table(x1,x2)
DT1

输出

执行时,上述脚本将生成以下输出(由于随机化,此输出将因您的系统而异) −

     x1 x2
1:   8  1
2:   4  2
3:   8  5
4:   4  1
5:  10  2
6:   5 10
7:   9  3
8:   6  5
9:   1  6
10:  7  1
11:  9  7
12:  8  9
13:  4 10
14: 10  6
15:  1  4
16:  8  1
17: 10  4
18:  7  1
19:  3  1
20:  3  7
21:  2  8
22:  4  9
23:  5  8
24:  4  7
25:  3  1
    x1 x2

创建第二个 data.table 对象

让我们创建一个如下所示的 data.table 对象 −

DT2<-data.table(y1=5,y2=0)
DT2

输出

   y1 y2
1: 5 0

将两个 data.table 对象的值相乘

使用 mapply 函数将包含多行数据的 data.table 对象 DT1 中的行值与包含单行数据的 data.table 对象 DT2 中的行值相乘 −

library(data.table)
x1<-sample(1:10,25,replace=TRUE)
x2<-sample(1:10,25,replace=TRUE)
DT1<-data.table(x1,x2)
DT2<-data.table(y1=5,y2=0)
mapply(`*`,DT1,DT2)

输出

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

相关文章