【发布时间】:2019-02-27 21:58:08
【问题描述】:
我有一个 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
所以它认为 -0.3684 和 0.3684 是相同的值而不是只返回 2,所以返回 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")))
【问题讨论】:
-
你试过
max.col(replace(x, is.na(x), -Inf))吗? -
这似乎是一个很好的解决方案——但是,例如,对于所有 3 列都是 NA 的行,它会返回“3”。当行中的最大值存在关联时,我还需要有 NA。有没有办法