我想删除包含' _1'的元素。和' _3'使用discard
中的purrr
函数在向量中。这里的例子是:
library(purrr)
x <- c("ABAC_13", "ZDRF73", "UYDS_12", "FGSH41", "GFSC_35" , "JHSC_29")
答案 0 :(得分:3)
使用discard
,我们需要提供一个逻辑向量,指示我们需要丢弃哪些值。
要创建逻辑向量,我们使用grepl
为具有“_1”或“_3”的元素赋予TRUE值
library(purr)
discard(x, grepl("_1|_3", x))
#[1] "ZDRF73" "FGSH41" "JHSC_29"
答案 1 :(得分:1)
由于这是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)
答案 2 :(得分:0)
可以使用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)]