在预先指定的数据框的特定行/列中插入字符值

时间:2015-08-21 14:50:29

标签: r dataframe

我有一个预先指定的数据框来保存一些输出数据:

d  = data.frame(a=character(5), b=numeric(5))

我正在尝试将值分配给d$a的特定行:

d$a[3] = "foo"

哪个适用于数字字段,但插入NA而不是值,因为它期望一个因素:

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

如何插入正确的值?

1 个答案:

答案 0 :(得分:2)

这是一个经典案例,您可能希望在创建stringsAsFactors = FALSE时记住使用data.frame

或者,您可以在尝试进行替换之前手动添加缺失的级别。 (例如,levels(d$a) <- c(levels(d$a), "foo"))。

请尝试以下示例:

d <- data.frame(a=character(5), b=numeric(5), stringsAsFactors = FALSE)
d$a[3] <- "foo"

e <- data.frame(a=character(5), b=numeric(5))
levels(e$a) <- c(levels(e$a), "foo")
e$a[3] <- "foo"