R按值选择,避免NA

R按值选择,避免NA,r,dataframe,subset,na,R,Dataframe,Subset,Na,我尝试按值提取行 col1 <- c("A", "B", "C", NA) df <- data.frame(col1) df$col1[col1 == "A"] 但我当然只想要“A”。如何避免R选择NA值?顺便说一句,我认为这种行为相当危险,因为许多人会陷入这种陷阱,例如替换值、子集等。正如Markus在评论中提到的,基本解决方案是: df$col1[which(df$col1 == "A&

我尝试按值提取行

col1 <- c("A", "B", "C", NA)
df <- data.frame(col1)
df$col1[col1 == "A"]

但我当然只想要“A”。如何避免R选择NA值?顺便说一句,我认为这种行为相当危险,因为许多人会陷入这种陷阱,例如替换值、子集等。

正如Markus在评论中提到的,基本解决方案是:

df$col1[which(df$col1 == "A")]
或使用
stringr

str_subset(df$col1, "A")

正如Markus在评论中提到的,基本解决方案是:

df$col1[which(df$col1 == "A")]
或使用
stringr

str_subset(df$col1, "A")

在%中使用
%,对于
NA
值返回
FALSE

df$col1[col1 %in% "A"]
#[1] "A"

在%
中使用
%,对于
NA
值返回
FALSE

df$col1[col1 %in% "A"]
#[1] "A"

过滤器
dplyr
自动删除
NA
元素,即使关系运算符为
=

library(dplyr)
df %>%
   filter(col1 == 'A') %>% 
   pull(col1)
#[1] "A"

或者使用
collapse

library(collapse)
sbt(df, col1 == 'A')$col1
#[1] "A"

过滤器
dplyr
自动删除
NA
元素,即使关系运算符为
=

library(dplyr)
df %>%
   filter(col1 == 'A') %>% 
   pull(col1)
#[1] "A"

或者使用
collapse

library(collapse)
sbt(df, col1 == 'A')$col1
#[1] "A"

您可以使用
is.element

df[is.element(col1,"A"),]
#[1] "A"
或者干脆过滤掉
NA

df[col1 == "A" & !is.na(col1),]
#[1] "A"

您可以使用
is.element

df[is.element(col1,"A"),]
#[1] "A"
或者干脆过滤掉
NA

df[col1 == "A" & !is.na(col1),]
#[1] "A"