如何检查一个向量是否包含给定的值?
当前回答
为此,我非常喜欢grep()和grepl()。
Grep()返回一个整数向量,表示匹配的位置。
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
grepl()返回一个逻辑向量,在匹配的位置有"TRUE"。
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
这些函数区分大小写。
其他回答
match()(返回第一个外观)和%in%(返回一个布尔值)函数都是为此设计的。
v <- c('a','b','c','e')
'b' %in% v
## returns TRUE
match('b',v)
## returns the first location of 'b', in this case: 2
any()函数使代码可读
> w <- c(1,2,3)
> any(w==1)
[1] TRUE
> v <- c('a','b','c')
> any(v=='b')
[1] TRUE
> any(v=='f')
[1] FALSE
为此,我非常喜欢grep()和grepl()。
Grep()返回一个整数向量,表示匹配的位置。
yo <- c("a", "a", "b", "b", "c", "c")
grep("b", yo)
[1] 3 4
grepl()返回一个逻辑向量,在匹配的位置有"TRUE"。
yo <- c("a", "a", "b", "b", "c", "c")
grepl("b", yo)
[1] FALSE FALSE TRUE TRUE FALSE FALSE
这些函数区分大小写。
你可以使用%in%操作符:
vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
还要找到元素“which”的位置,可以用作
pop <- c(3, 4, 5, 7, 13)
which(pop==13)
为了找到目标向量中不包含的元素,可以这样做:
pop <- c(1, 2, 4, 6, 10)
Tset <- c(2, 10, 7) # Target set
pop[which(!(pop%in%Tset))]