簡體   English   中英

通過使用邏輯向量從字符向量中排除FALSE元素

[英]excluding FALSE elements from a character vector by using logical vector

我設法做到以下幾點:

stuff <- c("banana_fruit","apple_fruit","coin","key","crap")
fruits <- stuff[stuff %in% grep("fruit",stuff,value=TRUE)]

但我無法選擇具有通常想法和想法的不太健康的東西

no_fruit <- stuff[stuff  %not in% grep("fruit",stuff,value=TRUE)]
#or
no_fruit <- stuff[-c(stuff  %in% grep("fruit",stuff,value=TRUE))]

不工作。 后者只是忽略了“-”

> stuff[grep("fruit",stuff)]
[1] "banana_fruit" "apple_fruit" 
> stuff[-grep("fruit",stuff)]
[1] "coin" "key"  "crap"

您只能將負下標與數字/整數向量一起使用,而不能合乎邏輯,因為:

> -TRUE
[1] -1

如果要取反邏輯向量,請使用!

> !TRUE
[1] FALSE

正如約書亞所說:您不能使用-否定邏輯索引; 使用! 代替。

stuff[!(stuff %in% grep("fruit",stuff,value=TRUE))]

另請參見stringr程序包。

stuff[!str_detect(stuff, "fruit")]

grep中還有一個名為“ invert”的參數,該參數基本上可以滿足您的需求:

> stuff <- c("banana_fruit","apple_fruit","coin","key","crap")
> fruits <- stuff[stuff %in% grep("fruit",stuff,value=TRUE)]
> fruits
[1] "banana_fruit" "apple_fruit" 
> grep("fruit", stuff, value = T)
[1] "banana_fruit" "apple_fruit" 
> grep("fruit", stuff, value = T, invert = T)
[1] "coin" "key"  "crap"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM