当我尝试将新字符值分配给其中一列中的某些值时,我收到此错误。
这很好用:
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
我不知道为什么我可以替换某些值而不是其他值。
答案 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