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

时间:2018-01-11 12:13:12

标签: r

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

例如,让

<script type="text/javascript" src="_nuxt/vendor.a0f2fda15695e202a186.js"></script>

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

将a定义为具有三个组:

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

r如何乘以向量组1,b将其他所有内容设为零([[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 ),然后重复第2组(2 3 0 0 0 0)和3(0 0 4 5 0 0)?

1 个答案:

答案 0 :(得分:1)

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

auto& networkEntry = _networkEntries[key];

一些解释。 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 是每个组中元素的数量,在实际情况下应为56. k是在每个坐标处具有相应块编号的向量。然后我查看了所有块编号v,但不是创建像unique(v)这样的向量,而是仅使用c(2,3,0,0,0,0) 仅使用矩阵的前两行{{ 1}},相当于玩零。另外,如果c(2,3)的长度可以被b整除,则可以用

替换最后一行
a