【发布时间】:2017-03-22 12:07:12
【问题描述】:
我有一个非方阵,需要对其下对角线进行一些计算。我发现最好的方法是将下对角线转换为列/行并使用 cumprod 之类的函数。现在我使用定义如下的 for 循环和 exdiag:
exdiag <- function(mat, off=0) {mat[row(mat) == col(mat)+off]}
但是它并不是真正有效的。你知道任何其他算法可以实现这种结果吗?
一个小例子来说明我在做什么:
exdiag <- function(mat, off=0) {mat[row(mat) == col(mat)+off]}
mat <- matrix(1:72, nrow = 12, ncol = 6)
newmat <- matrix(nrow=11, ncol=6)
for (i in 1:11){
newmat[i,] <- c(cumprod(exdiag(mat,i)),rep(0,max(6-12+i,0)))
}
最好的问候, 阿图尔
【问题讨论】:
-
为什么不把矩阵做成正方形,然后提取对角线
-
我不太明白。你能详细说明一下吗?
-
请您提供一个可重现的示例(包括预期输出),以便我们了解您的目标
-
当然,我添加了一个例子来展示我在做什么
标签: r algorithm matrix transformation