R 如何将向量中的一组元素与矩阵相乘,将所有其他元素设置为零
我正在寻找一种方法,在一个向量中选择一组元素并将其与一个矩阵相乘,同时将其他元素设置为零,然后对下一组重复此过程 比如让R 如何将向量中的一组元素与矩阵相乘,将所有其他元素设置为零,r,R,我正在寻找一种方法,在一个向量中选择一组元素并将其与一个矩阵相乘,同时将其他元素设置为零,然后对下一组重复此过程 比如让 a <- c(2:7) b <- matrix(1:36, byrow = FALSE, nrow = 6) 将a定义为有三个组: 第1组的元素1和元素2 第2组的要素3和4 第3组的要素5和6 r如何将向量a组1与b组相乘,并将其他所有设置为零(23000),然后重复第2组(04500)和第3组(00067)?以下是获得结果的一种方法: k <- 2
a <- c(2:7)
b <- matrix(1:36, byrow = FALSE, nrow = 6)
将a定义为有三个组:
- 第1组的元素1和元素2
- 第2组的要素3和4
- 第3组的要素5和6
r如何将向量a组1与b组相乘,并将其他所有设置为零(
23000
),然后重复第2组(04500
)和第3组(00067
)?以下是获得结果的一种方法:
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
到目前为止你试过什么?包括一个代码示例,你将更有可能得到一个有用的答案。还有,为什么不使用你在那里创建的三个向量,为什么从一个向量开始呢?我正在使用的数据集比这里的示例大得多,你的方法可行,但不知道代码如何工作,因为对于代码,我可能会尝试一个循环,c在一般情况下,这些群体是什么样的?要素1、2;3,4; ...; n-1,n?或者它们是以某种形式提供的?
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
sapply(unique(v), function(n) a[v == n] %*% b[v == n, ])