警告消息:生成的因子级别无效,NA

时间:2017-09-21 10:42:28

标签: r

当我尝试将新字符值分配给其中一列中的某些值时,我收到此错误。

这很好用:

merge_output$extra_dod[merge_output$extra_dod == 'Refugees camps in forestreserve.'] <-'Refugees'

但这不是:

merge_output$extra_dod[merge_output$extra_dod=='Air Strip'] <-'strip'

并返回此错误消息:

Warning message:
  In `[<-.factor`(`*tmp*`, merge_output$extra_dod == "Lime", value = c(5L,  :
  invalid factor level, NA generated

我不知道为什么我可以替换某些值而不是其他值。

1 个答案:

答案 0 :(得分:3)

这是一个非常简化的示例,它以同样的方式失败:

f <- factor(c("a","b","c","d"))
f[f=="d"] <- "e"
  

警告讯息:   在[<-.factor*tmp*,f ==&#34; d&#34;,value =&#34; e&#34;):   无效因子水平,NA生成

如果你碰巧尝试用已经的因子水平替换 存在,它有效:

f[f=="c"] <- "b"

一些更通用的选项:

  • 将变量转换回字符向量 在尝试替换值之前(或使用类似的东西) stringsAsFactors=FALSE / read.csv
  • 中的read.table
  • 使用car::recode