r语言 - 创建一个对矩阵的对角线求和的程序



我正在尝试创建一个程序,该程序将我创建的矩阵的对角线求和。我使用了下面的代码,但我不明白我所做的代码有什么问题。

a <- c(1, 2, 3) 
b <- c(3, 5, 6)
x <- matrix(a, b, nrow=3, ncol=3)
x
for (i in 1:nrow(x)) {
for (j in 1:ncol(x)) {
if (i=j) {
diags[i, j] <- sum(x[i, j])
}
}
}

这已经是很棒的代码了!然而,正如在评论中提到的,当你想对一个向量求和的时候,你是在尝试对一个标量求和。你需要将x[i, j]的结果加到一个起始值上,这个值当然是零。因此,首先创建值为0的diags,并在每次循环迭代时将结果添加到CC_3中。

注意:用于比较,我们使用`==`,用于函数调用=中的赋值,以及用于脚本`<-`中的赋值。最好使用seq函数,如seq_len(nrow(x))而不是1:nrow(x);乍一看,结果是一样的,但有一些优点,例如,如果sum0为零。

diags <- 0
for (i in seq_len(nrow(x))) {
for (j in seq_len(ncol(x))) {
if (i == j) {
diags <- diags + x[i, j]
}
}
}
diags
# [1] 9

检查diag功能

sum(diag(x))
# [1] 9

数据:

我用了一个稍微不同的矩阵,它不是那么对称,有更多可区分的值。

x <- matrix(1:9 , nrow=4, ncol=3)

最新更新