如何更改data.frame中的单个值(值是一个新级别)?

时间:2015-10-07 18:13:01

标签: r levels

我想使用此代码df[307, 1] <- 231更改data.frame中的单个值,即NA。但是,我收到了警告信息

warning message:
In `[<-.factor`(`*tmp*`, iseq, value = 231) :
invalid factor level, NA generated

据我所知,级别231不在变量([,1]第一列)的级别内。我该怎么做才能解决这个问题?添加新关卡231?或者另一种改变这个单一价值的方法。谢谢你的想法。

1 个答案:

答案 0 :(得分:2)

正如@akrun在评论中指出的那样:

x <- factor(c("a", "b"))
x[3] <- "c"
Warning message:
In `[<-.factor`(`*tmp*`, 3, value = "c") :
  invalid factor level, NA generated
# one solution:
x <- factor(c("a", "b"))
x <- factor(c(as.character(x), "c"))

# a second solution:
x <- factor(c("a", "b"))
levels(x) <- c("a", "b", "c")
x[3] <- "c"