Предположим, у меня есть 2 матрицы m3 и m4:
m3 <- matrix(6:1,nrow=3,ncol=1)
[,1]
[1,] 6
[2,] 5
[3,] 4
m4 <- matrix(6:1,nrow=2,ncol=1)
[,1]
[1,] 6
[2,] 5
Для каждого значения строки в m4 (6 и 5) мне нужна индексная строка m3, содержащая значение, наиболее похожее на значение строки m4 (по абсолютной разнице).
Следовательно, поскольку значения m4[1,1] = 6 и m4[2,1] = 5, ближайшими значениями m3 по абсолютной разнице являются m3[1,1] = 6 (rowindex=1) и m3[2 ,1] = 5 (rowindex=2)
Итак, я хочу, чтобы матрица m5 была:
[,1]
[1,] 1
[2,] 2
Вы можете использовать sapply
-
sapply(m4, function(x) {
which.min(abs(x - m3))
}) %>%
matrix(ncol = 1)
[,1]
[1,] 1
[2,] 2
Попробуйте это - sapply(m4, function(x) order(abs(x - m3)))
. В выходных данных столбцы указывают номер строки на m4, а значения указывают номер строки на m3. Дайте мне знать.
любой способ получить 2-й... 3-й... п.. наименьшее значение?