如何处理这个错误? “在`[<-。factor`(`* tmp *`,i,value =“ WEN \\ UA”)中:无效的因子级别,生成了NA”

时间:2019-01-24 01:07:34

标签: r

我正尝试将我在代码中较早生成的数据框的单元格替换为另一文本。

for (i in 1:length(flatfileFltrd)){
  rename = paste("WEN", "\\", flatfileFltrd[i,8], sep = "")
  flatfileFltrd$fileName[i] = rename
}

返回:

In `[<-.factor`(`*tmp*`, i, value = "WEN\\UA") :
  invalid factor level, NA generated

我试图弄清楚我拥有哪种类型的数据帧,因为我假设问题回溯了,因为它们既不相同,也没有运气。 is.atomic(flatfileFltrd $ fileName [i])返回TRUE

该如何解决?有没有更好的方法来替换我的数据元素?

1 个答案:

答案 0 :(得分:2)

发生这种情况是因为因素具有特定的允许水平。 有两种解决方法:

  1. 首先将因素转换为字符:

flatfileFltrd$fileName <- as.character(flatfileFltrd$fileName)

  1. 将新级别添加到现有因子级别:

levels(flatfileFltrd$fileName) <- c(levels(flatfileFltrd$fileName), rename)