首页 > 解决方案 > 用 forcats 中的 str_replace() 替换 NA 而不是“N/A”不起作用

问题描述

我正在使用str_replace()from forcatslibrary 来替换我的 character "N/A"NA所以我写了下一行:

str_replace(as.character(iris$Species), "setosa", NA)

它说替换对象需要一个字符,这个实际上有效:

str_replace(as.character(iris$Species), "setosa", "NNAA")

有谁知道是否可以在不进行子集化的NA情况下替换它[]?提前致谢。

标签: rdplyrforcats

解决方案


仅仅因为您不想进行子集化并不意味着您应该使用 str_replace 来进行精确的字符串比较:

library(data.table)
setDT(iris)
DT[,Species:=ifelse(Species=="setosa", NA_character_, "setosa")]
# or simpler
DT[,Species:=ifelse(Species=="setosa", NA, "setosa")]
# or simpler
DT[Species=="setosa",Species:=NA]

推荐阅读