1
是否可以計算矩陣對角線下對角線的平均值?平均對角線減一個
a1 a2 a3 a4 a5
a1 0 1 1 1 1
a2 2 0 1 1 1
a3 1 3 0 1 1
a4 1 1 4 0 1
a5 1 1 1 5 0
我想計算的2 + 3 + 4 + 5
是否可以計算矩陣對角線下對角線的平均值?平均對角線減一個
a1 a2 a3 a4 a5
a1 0 1 1 1 1
a2 2 0 1 1 1
a3 1 3 0 1 1
a4 1 1 4 0 1
a5 1 1 1 5 0
我想計算的2 + 3 + 4 + 5
這裏有一個可能性
mean(m[col(m) == (row(m) - 1)])
## [1] 3.5
這裏的想法是讓列和行索引,然後只能選擇平均列==行 - 1(恰好在對角線下方 - 對角線爲col ==行)
數據
m <- structure(c(0L, 2L, 1L, 1L, 1L, 1L, 0L, 3L, 1L, 1L, 1L, 1L, 0L,
4L, 1L, 1L, 1L, 1L, 0L, 5L, 1L, 1L, 1L, 1L, 0L), .Dim = c(5L,
5L), .Dimnames = list(c("a1", "a2", "a3", "a4", "a5"), c("a1",
"a2", "a3", "a4", "a5")))
是。我認爲(一如既往)有很多種方法可以做到,但這裏有一個。它使用base-R中的diag
函數,並在獲取對角線並計算其平均值之前刪除第一行和最後一列。
res <- mean(diag(mm[-1,-ncol(mm)]))
使用的數據:
mm <- structure(c(0L, 2L, 1L, 1L, 1L, 1L, 0L, 3L, 1L, 1L, 1L, 1L, 0L,
4L, 1L, 1L, 1L, 1L, 0L, 5L, 1L, 1L, 1L, 1L, 0L), .Dim = c(5L,
5L), .Dimnames = list(c("a1", "a2", "a3", "a4", "a5"), c("a1",
"a2", "a3", "a4", "a5")))
是否總是在對角線一條線?還是應該推廣? – Heroka
可以概括爲適用於上線或下線 –