mat[nrow(mat) * (2 * col(mat) - 1) / (2 * ncol(mat)) - row(mat) > -1/2]
# [1] 4 7 10 11 13 14 15
nrow(mat) * (2 * col(mat) - 1) / (2 * ncol(mat)) - row(mat) + 1
虽然矩阵不是方阵,但仍然存在很多对称性。如果矩阵非常大,你可以利用这些对称性,仅计算25%的单元格面积即可。但我假设这里并非如此。
由于这种对称性,下三角矩阵也很容易得到:
mat[nrow(mat) * (2 * col(mat) - 1) / (2 * ncol(mat)) - row(mat) < -1/2]
# [1] 1 2 3 5 6 9 12
col
和row
,这使得它变得更容易了。 - Konrad Rudolph