下标分配忽略了NA

时间:2013-10-09 13:57:49

标签: r slice

我有一个我想要标准化的评分矩阵。为了做到这一点,我只想将所有负值除以最小值,将所有正值除以最大值(这样可以方便地使每个值为正值,在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。 minmax在指定时已经很好地处理了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

1 个答案:

答案 0 :(得分:2)

使用更复杂的布尔条件:

x <- scores < 0 & !is.na(scores)

scores[x] <- scores[x] / min(scores[x])