【问题标题】:R: change single value of data.frame returns invalid factor level warningR:更改 data.frame 的单个值返回无效因子级别警告
【发布时间】:2019-12-25 18:03:40
【问题描述】:

我的问题是thisthis 问题的组合。

我有一个数据框:

df <- data.frame("ID" = c(1,2,3,4),
                 "char" = c("a","b","c","d"))

我想改变一个值,比如

df[1,1] <- 10

这是有效的。当我尝试这个时

df[2,2] <- "f"

df$char[1] <- "f"

df$char[1] <- as.character("f")

我收到以下警告:

"Warning message:
In `[<-.factor`(`*tmp*`, 2, value = c(1L, NA, 3L, 4L)) :
  invalid factor level, NA generated"

如何更改“char”列中的内容?

【问题讨论】:

  • 最简单的方法是使用df &lt;- data.frame(ID = c(1,2,3,4), char = c("a","b","c","d"), stringsAsFactors = FALSE),然后一切正常。
  • @RonakShah 如果他们有权创建这样的数据框,则可以使用,但这很可能不是他们的真实生活情况
  • @camille 你是对的。我正在为已经创建的数据框寻找一个简单的解决方案..

标签: r dataframe warnings cell


【解决方案1】:

我们可以预先包含levels,然后进行分配

df$char <- factor(df$char, levels = c(levels(df$char), "f"))
df[2,2] <- "f"

【讨论】:

  • 谢谢,这正在工作。但我仍然想知道,为什么这个据称简单的赋值需要两行相当棘手的代码..
  • @DerDressing 因为factor 列在分配之前需要该级别
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2015-02-24
  • 2011-04-26
相关资源
最近更新 更多