May be this is too simple of a question but I couldn't find a functional answer. How can we extract the opposite diagonal elements of any square matrix in R? In the example below that would be: 7, 2, 8
.
r <- matrix(c(1, 5, 8, 1:3, 7:9), 3)
An approach could be
r[(n<-nrow(r))^2-(1:n)*(n-1)]
# [1] 7 2 8
## microbenchmark (matrix(1:1e6,1000))
# Unit: microseconds
# expr min lq mean median uq max neval
# r[(n<-nr... 26.897 39.0075 65.36835 47.309 85.9345 316.97 100
# diag(r[,... 18070.388 18905.3475 20237.09599 19956.615 20423.4695 27798.88 100
# rev(r[ro... 14220.609 21206.7220 21238.59515 22036.275 22599.4490 33252.58 100