У меня есть матрица 744 x 3 (названная sharpe_a), которую я зацикливаю для создания кадра данных, состоящего из значения индекса, соответствующего максимальному значению для каждой строки (названного last_bestIndex_colnum)
Проблема в том, что онаобрабатывает два значения с идентичными абсолютными значениями, но противоположными знаками в качестве эквивалентов.
sr_sig_fx sr_comm_i sr_comm_ii
[1,] NA NA NA
[2,] NA 0.2632 -0.5714
[3,] -0.3684 0.3684 -0.2222
[4,] 0.3846 -0.3846 -0.5000
поэтому при использовании grep для определения столбца, содержащего максимальное значение для строки 3, например, я получаю следующее
> grep(max(x[3,]),x[3,])
[1] 1 2
, поэтому вместо простого возврата 2 оно думает-0,3684 и 0,3684 - это одно и то же значение, поэтому возвращаются 1 и 2. Однако я проверяю x [3,1]> x [3,2] и возвращает «FALSE», затем x [3,1]
structure(c(NA, NA, -0.3684, 0.3846, 0.7, 0.7, 0.7895, 0.9412,
0.55, 0.25, NA, 0.2632, 0.3684, -0.3846, -0.7, -0.7, -0.7895,
-0.9412, -0.55, -0.25, NA, -0.5714, -0.2222, -0.5, -0.7, -0.7,
-0.7895, -1, -0.8235, -1), .Dim = c(10L, 3L), .Dimnames = list(
NULL, c("sr_sig_fx", "sr_comm_i", "sr_comm_ii")))