我正在寻找一种方法,在矢量中选择一组元素并将其与矩阵相乘,同时将每个其他元素设置为零,然后为下一个组重复此过程。
例如,让
<script type="text/javascript" src="_nuxt/vendor.a0f2fda15695e202a186.js"></script>
给
a <- c(2:7)
b <- matrix(1:36, byrow = FALSE, nrow = 6)
将a定义为具有三个组:
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
)?
答案 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