小编dcs*_*uka的帖子

更快地评估从右到左的矩阵乘法

我注意到在 R 中从右到左以二次形式计算矩阵运算明显快于从左到右,具体取决于括号的放置方式。显然它们都执行相同的计算量。我想知道为什么会这样。这与内存分配有什么关系吗?

# A: 5000 * 5000
# B: 5000 * 2
A = matrix(runif(5000 * 5000), nrow = 5000)
B = matrix(rbinom(5000 * 2, size = 2, prob = 0.3), nrow = 5000)

microbenchmark((t(B) %*% A) %*% B, t(B) %*% (A %*% B), times = 100)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是会话信息:

R version 4.2.0 (2022-04-22)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Big Sur 11.4

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics …
Run Code Online (Sandbox Code Playgroud)

performance r matrix blas matrix-multiplication

14
推荐指数
1
解决办法
528
查看次数

将带有行号的空格分隔的 Stack Overflow 数据直接读取到 R 中

通常,Stack Overflow R 问题可以共享只是 data.frame 输出的示例数据,而不是dput

\n
      id cate  result\n 1     1 yes       1\n 2     1 yes      NA\n 3     1 no       NA\n 4     2 no       NA\n 5     2 yes       1\n 6     2 yes      NA\n 7     2 no       NA\n 8     3 no       NA\n 9     3 yes      NA\n10     3 no       NA\n11     3 yes       1\n12     3 yes      NA\n13     3 no       NA\n14     3 yes      NA\n15     4 yes       1\n16     4 yes      NA\n17     4 yes      NA\n18     4 no       NA\n19     4 no       NA \n
Run Code Online (Sandbox Code Playgroud)\n …

r dataframe dplyr readr tibble

5
推荐指数
2
解决办法
123
查看次数