我想以所有值 <=.2 变为 2,<=.4 变为 3 等方式重新编码矩阵中的值。但是,我的数据中有缺失,我不想更改(保留它们不)。在这里您可以找到我的代码的简化版本。使用 na.omit 非常适合第一次更改
try <- matrix(c(0.78,0.62,0.29,0.47,0.30,0.63,0.30,0.20,0.15,0.58,0.52,0.64,
0.76,0.32,0.64,0.50,0.67,0.27, NA), nrow = 19)
try[na.omit(try <= .2)] <- 2 #Indeed changes .20 and .15 to 2 and leaves the NA as NA
但是,当我对更高类别执行相同操作时,NA 也会更改:
try[na.omit(try <= .8)] <- 5 #changes all other values including the NA to 5
有人可以向我解释两者有什么区别,为什么第二个也改变了 NA 值,而第一个没有?还是我做错了什么?