r - 将行矩阵的元素与对应列的另一个矩阵相加
问题描述
我想将矩阵 A 的每一行与矩阵 B 相加。具有预期结果的可重现示例:
set.seed(1)
A <- matrix(round(runif(15, 1, 15)), nrow = 3, ncol = 5)
B <- matrix(seq(100,500,100), nrow = 1, ncol = 5)
> A
[,1] [,2] [,3] [,4] [,5]
[1,] 5 14 14 2 11
[2,] 6 4 10 4 6
[3,] 9 14 10 3 12
> B
[,1] [,2] [,3] [,4] [,5]
[1,] 100 200 300 400 500
# Expected result
> C
[,1] [,2] [,3] [,4] [,5]
[1,] 105 214 314 402 511
[2,] 106 204 310 404 506
[3,] 109 214 310 403 512
解决方案
您可以使用sweep
添加A
和B
。
sweep(A, 2, B, "+")
# [,1] [,2] [,3] [,4] [,5]
#[1,] 105 214 314 402 511
#[2,] 106 204 310 404 506
#[3,] 109 214 310 403 512
您还可以使用col
:
A + B[col(A)]
# [,1] [,2] [,3] [,4] [,5]
#[1,] 105 214 314 402 511
#[2,] 106 204 310 404 506
#[3,] 109 214 310 403 512
推荐阅读
- python - 递归 Python3.9 的替代方案(GW2 配方计算)
- javascript - 如何选择然后取消选择区域?
- postgresql - 触发对 RabbitMq 的 Postgresql 更新
- julia - 如何将一个类型定义为另一个已定义类型的向量?
- c# - 定时器有时不触发
- c - 虚拟文件系统如何处理读取和写入等系统调用?
- python - Faker的pyint中参数“step=1”是什么意思?
- c++ - 在 C++ 中使用 protobuf 对象的 protobuf 映射
- javascript - 通过更改单个对象值来更改合并对象值
- javascript - 在 matter.js 中键盘移动很生涩