1

我有一个要标准化的评分矩阵。为了做到这一点,我只想将所有负值除以最小值,将所有正值除以最大值(这很方便使每个值都为正值,并且在 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

我只想忽略 NA 并将它们视为 FALSE。min并且max在指定时已经很好地处理了 NA,但是有没有办法让</>表现得像那样呢?

例如以下适用:

 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
4

1 回答 1

2

使用更复杂的布尔条件:

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

scores[x] <- scores[x] / min(scores[x])
于 2013-10-09T14:19:32.717 回答