我有一个我想要标准化的评分矩阵。为了做到这一点,我只想将所有负值除以最小值,将所有正值除以最大值(这样可以方便地使每个值为正值,在0和1之间,矩阵中有两个值)。
如果没有NA,这很好。
scores[scores < 0] <- scores[scores < 0] / min(scores, rm.na=T)
scores[scores > 0] <- scores[scores > 0] / max(scores, rm.na=T)
scores
我只是想忽略这些NAs并将它们视为FALSE。 min
和max
在指定时已经很好地处理了NAs,但有没有办法让<
/ >
表现得那样?
e.g。以下适用:
1 NA T T
NA 2 > 0 == T T
-1 -2 F F
怎么做
1 NA T F
NA 2 ? 0 == F T
-1 -2 F F
答案 0 :(得分:2)
使用更复杂的布尔条件:
x <- scores < 0 & !is.na(scores)
scores[x] <- scores[x] / min(scores[x])