purrr::discard 如何删除包含一个或多个特定字符串的向量中的元素
purrr::discard How to delete elements in a vector containing one or more specific strings
我想使用 purrr
中的 discard
函数删除向量中包含“_1”和“_3”的元素。这里的例子:
library(purrr)
x <- c("ABAC_13", "ZDRF73", "UYDS_12", "FGSH41", "GFSC_35" , "JHSC_29")
由于这是 tidyverse
特有的,我们可以使用它特有的语法
library(tidyverse)
str_detect(x, "_[13]") %>%
discard(x, .)
#[1] "ZDRF73" "FGSH41" "JHSC_29"
如果我们需要删除元素
grep("_\d+", x, invert = TRUE, value = TRUE)
#[1] "ZDRF73" "FGSH41"
或者如果它特定于 1、3
grep("_[13]", x, invert = TRUE, value = TRUE)
#[1] "ZDRF73" "FGSH41" "JHSC_29"
如果我们需要去掉子串部分,
sub("_\d+", '', x)
可以使用 grepl()
执行此任务。基本上我们想要找到包含 _1
或 _3
的事件。 grepl 输出是 TRUE/FALSE
的逻辑向量。接下来,我们通过使用子集和取反运算符从 x
向量中删除这些元素,即 x[!grepl("_1|_3", x)]
.
x <- c("ABAC_13", "ZDRF73", "UYDS_12", "FGSH41", "GFSC_35" , "JHSC_29")
x[!grepl("_1|_3", x)]
对于discard
,我们需要提供一个逻辑向量来指示我们需要丢弃哪些值。
为了创建逻辑向量,我们使用 grepl
为具有“_1”或“_3”的元素提供 TRUE 值
library(purr)
discard(x, grepl("_1|_3", x))
#[1] "ZDRF73" "FGSH41" "JHSC_29"
我想使用 purrr
中的 discard
函数删除向量中包含“_1”和“_3”的元素。这里的例子:
library(purrr)
x <- c("ABAC_13", "ZDRF73", "UYDS_12", "FGSH41", "GFSC_35" , "JHSC_29")
由于这是 tidyverse
特有的,我们可以使用它特有的语法
library(tidyverse)
str_detect(x, "_[13]") %>%
discard(x, .)
#[1] "ZDRF73" "FGSH41" "JHSC_29"
如果我们需要删除元素
grep("_\d+", x, invert = TRUE, value = TRUE)
#[1] "ZDRF73" "FGSH41"
或者如果它特定于 1、3
grep("_[13]", x, invert = TRUE, value = TRUE)
#[1] "ZDRF73" "FGSH41" "JHSC_29"
如果我们需要去掉子串部分,
sub("_\d+", '', x)
可以使用 grepl()
执行此任务。基本上我们想要找到包含 _1
或 _3
的事件。 grepl 输出是 TRUE/FALSE
的逻辑向量。接下来,我们通过使用子集和取反运算符从 x
向量中删除这些元素,即 x[!grepl("_1|_3", x)]
.
x <- c("ABAC_13", "ZDRF73", "UYDS_12", "FGSH41", "GFSC_35" , "JHSC_29")
x[!grepl("_1|_3", x)]
对于discard
,我们需要提供一个逻辑向量来指示我们需要丢弃哪些值。
为了创建逻辑向量,我们使用 grepl
为具有“_1”或“_3”的元素提供 TRUE 值
library(purr)
discard(x, grepl("_1|_3", x))
#[1] "ZDRF73" "FGSH41" "JHSC_29"