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"