这里我试图从一个tibble中删除NA值:
mc = as_tibble(c("NA" , NA , "ls", "test"))
mc <- filter(mc , is.na == TRUE)
但是返回错误:
> mc = as_tibble(c("NA" , NA , "ls", "test"))
> mc <- filter(mc , is.na == TRUE)
Error in filter_impl(.data, quo) :
Evaluation error: comparison (1) is possible only for atomic and list types.
如何从此tibble中删除NA值?
答案 0 :(得分:1)
尝试:
library(tidyverse)
mc %>%
mutate(value = replace(value, value == "NA", NA)) %>%
drop_na()
给出了:
# A tibble: 2 x 1
value
<chr>
1 ls
2 test
第二行将所有"NA"
替换为真实<NA>
。然后第三行删除所有<NA>
值。
答案 1 :(得分:0)
@tyluRp和@danh给出的解决方案效果很好。
只想添加另一个具有优势的替代解决方案
请参阅此单行代码:
mc %>% replace(. == "NA", NA) %>% na.omit
答案 2 :(得分:-1)
如果您只想删除实际NA值:
library(dplyr)
filter(mc, !is.na(value))
或者(这将检查所有列,而不仅仅是上面指定的列):
na.omit(mc)
如果要删除两个NA值,并且等于字符串&#34; NA&#34;:
library(dplyr)
filter(mc, !is.na(value), !value == "NA")