![](/img/trans.png)
[英]Excluding elements of a vector from another vector, not using setdiff
[英]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.