答案 0 :(得分:6)
这对于代码高尔夫来说可能更好,但这是我的尝试:
n <- 5
m <- diag(n)
-((row(m) + col(m) -2) %% n)
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0 -1 -2 -3 -4
#> [2,] -1 -2 -3 -4 0
#> [3,] -2 -3 -4 0 -1
#> [4,] -3 -4 0 -1 -2
#> [5,] -4 0 -1 -2 -3
由reprex package(v0.3.0)于2019-11-30创建
类似的路线:
n <- 5
v <- seq_len(n)
-((outer(v, v, '+') - 2) %% n)
答案 1 :(得分:1)
这是一个相当简短的版本,但可能不是最短的版本:
n <- 5
-matrix(matrix(1:n - 1, n+1, n)[-n-1,], n,n)
答案 2 :(得分:1)
我同意这更适合代码高尔夫,但我将尝试一下:
-matrix(floor(seq(0,29,1.2))%%5, 5)
输出:
[,1] [,2] [,3] [,4] [,5]
[1,] 0 -1 -2 -3 -4
[2,] -1 -2 -3 -4 0
[3,] -2 -3 -4 0 -1
[4,] -3 -4 0 -1 -2
[5,] -4 0 -1 -2 -3