Я пытаюсь понять, как получить все диагонали матрицы. Например, скажем, у меня есть следующая матрица: A < матрица (1:16,4)
используя функцию diag(A)
, вернет
[1] 1 6 11 16
В дополнение к первичной диагонали, мне нужен список всех диагоналей выше и ниже.
5 10 15
2 7 12
9 14
3 8
4
13
Я нашел следующую ссылку qaru.site/info/355910/..., которая дает мне диагонали непосредственно выше и ниже первичной, однако я не могу понять, как расширить код чтобы получить остальную часть для любой матрицы размера. Я попробовал два вложенных цикла, так как кажется, что какой-то прирост матричных индексов даст результат, который я ищу. Я пробовал использовать ncol (A), nrow (A) в циклах for, но, похоже, не мог найти правильную комбинацию. Плюс я знаю, что для циклов, как правило, неодобрительно в R.
Указанный код:
diag(A[-4,-1])
diag(A[-1,-4])
который возвратил две диагонали, как верхние, так и нижние
Конечно, это квадратная матрица, и не все матрицы, которые я хочу выполнить, будут квадратными. В случае необходимости заполнение неквадратной площади НО. Ответ, который мне нужен, может быть в одном из других ответов на странице, но исходный вопрос включает в себя средства, суммы и т.д., Которые добавили уровень сложности, превышающий то, что я пытаюсь сделать. У меня такое чувство, что решение этого будет смехотворно простым, но для меня это просто не происходит. Я также удивлен, что я не мог найти этот вопрос нигде на SO, это, казалось бы, довольно распространенный вопрос. Возможно, я не знаю правильной терминологии для этой проблемы.