如何将 NA 从因子向量转换为 0 值

How to convert NA from factor vector to value of 0

我想将 NA 从因子向量转换为值 0

这是一个例子

myVec <- c(NA, 1, 2, NA)
myVec
[1] NA  1  2 NA

myVec <- factor(myVec)
[1] <NA> 1    2    <NA>
Levels: 1 2

for(i in 1:4){  
if(  is.na(myVec[i])  ) { myVec[i] = "0"}
}

Warning messages:
1: In `[<-.factor`(`*tmp*`, i, value = "0") :
  invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, i, value = "0") :
  invalid factor level, NA generated

一种方法可能是创建一个逻辑向量,其中包含特定向量条目是否为 na,然后将值 0 分配给每个匹配的条目。例如

navector <- is.na (myVec)
myVec [navector] <- 0

其实上面一行甚至可以搞定

myVec [ is.na (myVec) ] <- 0    

您可以将 0 添加到可能的因子值

levels(myVec) <- 0:2

并将 NA 值替换为 0

myVec[is.na(myVec)] <- 0
myVec
# [1] 0 0 1 0
# Levels: 0 1 2

或者,在创建因子时预先...

(myvec <- factor(ifelse(is.na(myVec), 0, myVec)))
# [1] 0 1 2 0
# Levels: 0 1 2