我有一个预先指定的数据框来保存一些输出数据:
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
如何插入正确的值?
答案 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"