用 NA 替换 0 而不更改类

man*_*h p 0 r vector na

有没有办法在asd$b == "b"不改变 asd 类的情况下用 NA 替换 0

> asd <- data.frame(a = c(1,0,0), b = c("a","b","c"))
> asd
  a b
1 1 a
2 0 b
3 0 c
Run Code Online (Sandbox Code Playgroud)

我在下面尝试过,但失败了

asd$a <- ifelse(asd$a[asd$b == "b"] == 0, "NA", asd$a[asd$b == "b"])
Run Code Online (Sandbox Code Playgroud)

预期输出

> asd
  a   b
1 1   a
2 NA  b
3 0   c
Run Code Online (Sandbox Code Playgroud)

仍然预期输出的类别应该是数字

小智 6

引用"NA"不同于NA.

"NA"是一个字符,如果您分配该值,R 将强制该列成为该字符,而NA是一个缺失值指示符。

以前的所有答案都是正确的,我只是尝试给出强制执行的原因。