У меня есть список матриц, первая матрица которого выглядит следующим образом:
$x
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
[1,] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[2,] 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
[3,] 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
[4,] 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
Я пытаюсь создать новую матрицу тех же размеров, которая будет указывать разницу в значениях между первойномер каждого ряда и каждого последующего номера.Я хотел бы использовать abs()
, чтобы сделать это значение абсолютным значением этой разницы.Таким образом, в приведенном выше примере ожидаемый результат будет:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
[1,] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[2,] 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
[3,] 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
[4,] 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
Я знаю, что могу использовать apply
, чтобы увидеть разницу между первым и последним столбцами:
abs(apply(x,1,diff, lag=15))
[1] 0 -1 0 -1
Однако я не уверен, как сделать этот итеративный процесс, в котором задержка увеличена с 1 до 15, для сбора информации для всей матрицы.У меня также есть несколько NA в моей исходной матрице, идентификатор которых, например, возвращается как NA в новой матрице.
В конечном счете, я хотел бы использовать решение с sapply
, чтобы применить его ко всему моему списку, состоящему из 500 матриц.как в примере.