如何在 R 数据框中查找每一行的乘积?


为了找到 R 数据框中每一行的乘积,我们可以使用 matrixStats 包中的 rowProds 函数,但是我们需要将数据框读取为矩阵。

例如,如果我们有一个名为 df 的数据框,那么我们可以使用下面给出的命令来查找 df 中每一行的乘积:

rowProds(as.matrix(df))

示例 1

以下代码片段创建一个示例数据框:

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1

创建了以下数据框:

 x1 x2 x3
 1  3  1  4
 2  7  2  0
 3  2  4  1
 4  9  2  0
 5  4  2  2
 6  7  3  1
 7  5  2  2
 8  1  2  0
 9  4  1  2
10  4  1  0
11  8  2  0
12  6  2  2
13  6  0  2
14  6  3  1
15  4  2  0
16 10  4  1
17  8  0  0
18  5  4  0
19  6  3  0
20  2  2  0

要加载 matrixStats 包并查找上面创建的数据框 df1 中数据的每一行的乘积,请将以下代码添加到上面的代码片段中:

x1<-rpois(20,5)
x2<-rpois(20,2)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
library(matrixStats)
df1$Row_Product_df1<-rowProds(as.matrix(df1))
df1

输出

如果您将以上所有代码片段作为一个程序执行,它将生成以下输出:

x1  x2  x3  Row_Product_df1
1   3  1   4               12
2   7  2   0                0
3   2  4   1                8
4   9  2   0                0
5   4  2   2               16
6   7  3   1               21
7   5  2   2               20
8   1  2   0                0
9   4  1   2                8
10  4  1   0                0
11  8  2   0                0
12  6  2   2               24
13  6  0   2                0
14  6  3   1               18
15  4  2   0                0
16 10  4   1               40
17  8  0   0                0
18  5  4   0                0
19  6  3   0                0
20  2  2   0                0

示例 2

以下代码片段创建一个示例数据框:

y1<-round(rnorm(20),0)
y2<-round(rnorm(20),0)
y3<-round(rnorm(20),0)
y4<-round(rnorm(20),0)
df2<-data.frame(y1,y2,y3,y4)
df2

创建了以下数据框:

y1  y2  y3 y4
 1  0  -1  0  -2
 2  0  -1 -1   0
 3  1   0  1   0
 4  0   0  0   0
 5  1  -1  1   2
 6  0   0 -1  -1
 7 -1   0 -1   0
 8  1   0 -1   0
 9 -2   0 -2   1
10  0   0  0   1
11 -2   1 -2   0
12  0   1  0  -1
13  3   0  0   1
14  1  -1  1  -2
15 -1   1  1  -1
16  1   1 -1   0
17  0   0 -1   0
18  2   0  2  -1
19  3   2  0  -1
20  1   0 -1  -1

要查找上面创建的数据框 df2 中数据的每一行的乘积,请将以下代码添加到上面的代码片段中:

y1<-round(rnorm(20),0)
y2<-round(rnorm(20),0)
y3<-round(rnorm(20),0)
y4<-round(rnorm(20),0)
df2<-data.frame(y1,y2,y3,y4)
df2$Row_Product_df2<-rowProds(as.matrix(df2))
df2

输出

如果您将以上所有代码片段作为一个程序执行,它将生成以下输出:

y1  y2  y3  y4 Row_Product_df2
1   0  -1   0   -2              0
2   0  -1  -1    0              0
3   1   0   1    0              0
4   0   0   0    0              0
5   1  -1   1    2             -2
6   0   0  -1   -1              0
7  -1   0  -1    0              0
8   1   0  -1    0              0
9  -2   0  -2    1              0
10  0   0   0    1              0
11 -2   1  -2    0              0
12  0   1   0   -1              0
13  3   0   0    1              0
14  1  -1   1   -2              2
15 -1   1   1   -1              1
16  1   1  -1    0              0
17  0   0  -1    0              0
18  2   0   2   -1              0
19  3   2   0   -1              0
20  1   0  -1   -1              0

更新于:2021年10月27日

212 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告