在R中生成以下矩阵的最短代码是什么?

Mat*_*tex 1 r matrix

我的第一篇文章-刚开始学习R,我正在尝试使用可能的最短代码生成以下矩阵,并且只能想到长/手动方式。任何帮助,将不胜感激。

在此处输入图片说明

Col*_*ole 5

对于代码高尔夫来说,这可能更好,但这是我的尝试:

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
Run Code Online (Sandbox Code Playgroud)

reprex软件包(v0.3.0)创建于2019-11-30

相似的路线:

n <- 5
v <- seq_len(n)
-((outer(v, v, '+') - 2) %% n)
Run Code Online (Sandbox Code Playgroud)