如何在 r 中高效地进行两个矩阵的元素乘法

问题描述 投票:0回答:1

我想对两个大矩阵进行元素乘法,我想尽可能最有效地做到这一点。

目前我正在使用基本运算符*

例如,如果我有一个如下所示的 DF1:

A B
1 2
3 4

还有像下一个这样的 DF2:

X
5 6
7 8

DF1*DF2 结果为

X
5 12
21 32

我怎样才能让它更快?

r dataframe performance matrix
1个回答
1
投票

您可以尝试

f3()
中的方法,例如

set.seed(0)
A <- as.data.frame(matrix(runif(100), 10, 10))
B <- as.data.frame(matrix(runif(100), 10, 10))

f1 <- function() A * B
f2 <- function() as.data.frame(as.matrix(A) * as.matrix(B))
f3 <- function() as.data.frame(`dim<-`(unlist(A, FALSE, FALSE) * unlist(B, FALSE, FALSE), dim(A)))

microbenchmark(
    f1(),
    f2(),
    f3(),
    check = "equal",
    unit = "relative"
)

你会看到

Unit: relative
 expr       min        lq      mean   median        uq       max neval
 f1() 19.372385 17.307953 10.091387 15.56534 15.536671 1.3039171   100
 f2()  5.589958  5.172589  2.967515  4.59233  4.151339 0.7771889   100
 f3()  1.000000  1.000000  1.000000  1.00000  1.000000 1.0000000   100
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.