- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然看起来很简单,但我做不到。我想将矩阵(或数据帧或数据表)b 中的每一行与向量 a 相乘。
a <- data.table(t(1:4))
b <- matrix(data=2, nrow=3, ncol=4)
期望的输出(矩阵、数据框或数据表形式):
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 2 4 6 8
[3,] 2 4 6 8
谁能帮助我如何(有效地)做到这一点?
最佳答案
b*rep(unlist(a),each=nrow(b))
# [,1] [,2] [,3] [,4]
# [1,] 2 4 6 8
# [2,] 2 4 6 8
# [3,] 2 4 6 8
或者只是b*rep(a,each=nrow(b))
如果你定义 a <- 1:4
它只是一个向量化的元素明智的乘法,没有来自 rep
的转换.
编辑:
似乎是 rep 拖慢了我的解决方案。这是一个基准测试,其中我包含一个带有预计算代表的选项,以及对扫描选项的一些改进(仅从源代码中获取相关部分)。
a <- data.table(t(1:200))
b <- matrix(data=2, nrow=100000, ncol=200)
a_vec <- unlist(a)
rep_a <- rep(a_vec,each=nrow(b))
microbenchmark::microbenchmark(
mkr1 = a[,lapply(.SD,function(x)(x*b[,x]))],
mkr2 = t(t(b) * (as.matrix(a)[1,])),
mkr_update = a[,lapply(V1:V4,function(i)(a[[i]]*b[,i]))],
mm = b*rep(unlist(a),each=nrow(b)),
mm_cheat = b*rep_a,
regular_sweep = sweep(b,2,unlist(a),`*`),
regular_sweep2 = sweep(b,2,a_vec,`*`),
improved_sweepA1 = b*aperm(array(unlist(a),rev(dim(b)))),
improved_sweepA2 = b*aperm(array(a_vec,rev(dim(b)))),
improved_sweepB1 = b*a[rep_len(1,nrow(b)),],
improved_sweepB2 = b*t(a_vec)[rep_len(1,nrow(b)),],
unit = "relative",
times=50)
Unit: relative
expr min lq mean median uq max neval
mkr1 42.12228 44.15266 50.23959 46.35240 57.20280 65.07289 50
mkr2 114.58427 124.19653 125.25660 131.08677 124.17058 114.91137 50
mkr_update 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 50
mm 231.34331 223.74365 217.50145 225.91117 215.90765 165.64814 50
mm_cheat 13.38838 13.22556 14.94682 13.36649 12.95260 25.15564 50
regular_sweep 96.15758 124.26746 121.04428 128.67282 129.19407 119.20210 50
regular_sweep2 97.79001 124.69191 124.74650 134.64249 134.97407 107.47152 50
improved_sweepA1 96.57837 124.86189 116.93736 127.08909 124.92805 105.83318 50
improved_sweepA2 96.27737 122.49773 118.45262 128.13369 126.15029 106.58669 50
improved_sweepB1 214.95773 227.39523 226.04339 248.38553 232.50401 161.45341 50
improved_sweepB2 31.20967 32.61873 37.74552 33.70969 41.52149 55.93362 50
关于R - 将 df 或矩阵的每一行与一个向量相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462591/
int SIZE = 512; p = new BigInteger(SIZE, 15, new Random()); q = new BigInteger(SIZE, 15, new
我正在寻找一种方法来扩展以下形式的逻辑表达式(在字符串中): “(A或B)和((C和D)或E)” 在Python中生成所有正集的列表,即 ['A and C and D', 'A and E', 'B
我正在从 MySQL 数据库中提取一组数字,并尝试对它们进行一些简单的数学运算来计算要放入发票中的总价格,但 PHP 不配合。我认为这可能是类型强制问题,因此我尝试添加一些 intval 和 floa
给定一个包含多列字典的数据框,我如何将数据框中的键相加和/或相乘以获得一列 A B {"ab":1,
我有 2 个 UIImageView - 一个在底部并显示默认图像(如照片)- 在第二个 UIImageView 上您可以在其中绘制。 我想从两个图像创建一个 UIImage,并将其保存为新图像。 我
我有一项作业,并且我已经写完了前两部分,但我只是不知道如何找到最小的数字。我应该提到它在 jFrame (gui) 中。它应该看起来像这样: 假设我有一个数字列表 (10 5 8 7 4 9),我想知
我是 python 的新手,但是有没有办法将矩阵与 0 和符号相乘?例如,见下文: import sympy as sym import numpy as np teams=np.matrix([[1
让我们为变量赋值: thisIsANumberVariable % +5 #adds 5 to thisIsANumberVariable thisIsANumberVariable [1] 8 th
我正在尝试以下操作: Eigen::SparseMatrix bijection(2 * face_count, 2 * vert_count); /* initialization */ Eigen
我必须创建一个没有 * 或 / 运算符的乘法函数。我已经做了这样的方法。 for(int i=0; i < number1; i++){ result += number2; } System
让我们为变量赋值: thisIsANumberVariable % +5 #adds 5 to thisIsANumberVariable thisIsANumberVariable [1] 8 th
这个问题已经有答案了: Convert String to double in Java (14 个回答) 已关闭 9 年前。 我的代码有问题。所以我知道我不能将我所拥有的乘以字符串,但我真的不知道有
我正在尝试以下操作: Eigen::SparseMatrix bijection(2 * face_count, 2 * vert_count); /* initialization */ Eigen
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我需要将矩阵和 vector 相乘。 为了实现这一点,我编写了一个带参数的函数: float** M 尺寸的最大值:m x n。 float* V 长度为 n 的 vector 。 float* R
我正在尝试找出一个好的循环展开来将两个矩阵相乘。 例如,如果我们想要对 NxN 矩阵求和: void SumMatrix(int *M, int n, int *result) { int i,
如果我创建一个像这样的字符串 mutiples=[1,2,3,4,5] 我希望能够使用 .forEach 将它们相乘,我该怎么做?我最好的猜测是: var total=0 multiples=[1,2
我试图将 price(1-3) 标签中的数据乘以 counterValue 以显示所选每个选项的价格 到目前为止,我的代码可以将counterValue 乘以所选选项Btn(1-3) 的因子 被选中
我有两个大小相同的 3-D 数组 a 和 b np.random.seed([3,14159]) a = np.random.randint(10, size=(4, 3, 2)) b = np.ra
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 4 年前。 Improve t
我是一名优秀的程序员,十分优秀!