如何将向量中的一组元素与矩阵相乘,将所有其他元素设置为零

阿德里安

我正在寻找一种在向量中选择一组元素并将其与矩阵相乘的方法,同时将其他元素设置为零,然后对下一组重复此过程。

例如让

a <- c(2:7)
b <- matrix(1:36, byrow = FALSE, nrow = 6)

给予

[[1]]
[1] 2 3 4 5 6 7

[[2]]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    4    5    6
[2,]    7    8    9   10   11   12
[3,]   13   14   15   16   17   18
[4,]   19   20   21   22   23   24
[5,]   25   26   27   28   29   30
[6,]   31   32   33   34   35   36

将定义为具有三组:

  • 组1的元素1和2
  • 组2的元素3和4
  • 第3组的元素5和6

r如何将组1的向量与b相乘以将其他所有值都设为零(2 3 0 0 0 0),然后对组2(0 0 4 5 0 0)和3(0 0 0 0 6 7重复

朱利叶斯·维诺拉(Julius Vainora)

这是获得结果的一种方法:

k <- 2
v <- rep(1:(length(a) %/% k), each = k)
sapply(unique(v), function(n) a[which(v == n)] %*% b[which(v == n), ])
#      [,1] [,2] [,3]
# [1,]    8   32   72
# [2,]   38   86  150
# [3,]   68  140  228
# [4,]   98  194  306
# [5,]  128  248  384
# [6,]  158  302  462

一些解释。k是每个组中元素的数量,在您的实际情况下应为56。v是在每个坐标处具有相应块编号的向量。然后我去了所有的块数unique(v),但不是创建矢量像c(2,3,0,0,0,0)我只拿c(2,3) 仅矩阵的前两行b,这相当于用零玩。另外,如果的长度可以a被整除k,则可以将最后一行替换为

sapply(unique(v), function(n) a[v == n] %*% b[v == n, ])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:如何将向量的所有元素除以所有其他元素的总和

将列表中的所有其他元素相乘

如何将第一行的列值相乘添加到组中的所有其他行?

如何将双打列表中的所有元素相乘?

如何将页脚设置为所有网站中的最后一个元素

保留第一个非零元素,将所有其他元素设置为0

将向量的元素与相同向量的所有元素相乘

将LIL稀疏矩阵的所有元素设置为零,同时保留其稀疏性

如何将一组Java对象表示为数据库中其他对象的字段?

如何将数组中的所有其他元素加倍?

如何将列中的多个元素与所有其他列保持不变?

如果行中的元素也为零,如何将整行设置为零?

如何将数组元素设置为数组的开头,并按分值对其他元素进行排序?

如何将数据帧列的所有元素与另一个数据帧中为该列指定的值相乘?

如何有效地将向量的每个元素与矩阵相乘以得到扩大的矩阵

Tensorflow,如何将2D张量(矩阵)与1D向量中的相应元素相乘

如何将向量中的元素块定义为零并循环下一个块?

将矩阵的元素与向量值相乘

如果不在 R 中的向量中,如何将元素分配为零?

使用广播根据向量中的元素将矩阵行相乘?

如何将空数组元素设置为零?

如何将一组元素包裹在div内联中?

在MATLAB中如何将除第3个元素之外的所有元素都设置为0?

jQuery如何将值从输入字段设置为其他元素的数据属性

如何将具有501个元素的向量加载到10列矩阵中?

如何随机分配一组数字到R中没有行且所有元素相同的矩阵

将索引列表左侧的所有元素设置为 1,将索引右侧的所有元素设置为零

如何将一个元素放在 div 中其他元素的右侧?

如何将一个元素与列表中的其他元素进行比较