如何检查一个向量是否包含给定的值?


当前回答

is.element()使代码更具可读性,与%中的%相同

v <- c('a','b','c','e')

is.element('b', v)
'b' %in% v
## both return TRUE

is.element('f', v)
'f' %in% v
## both return FALSE

subv <- c('a', 'f')
subv %in% v
## returns a vector TRUE FALSE
is.element(subv, v)
## returns a vector TRUE FALSE

其他回答

is.element()使代码更具可读性,与%中的%相同

v <- c('a','b','c','e')

is.element('b', v)
'b' %in% v
## both return TRUE

is.element('f', v)
'f' %in% v
## both return FALSE

subv <- c('a', 'f')
subv %in% v
## returns a vector TRUE FALSE
is.element(subv, v)
## returns a vector TRUE 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))]

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

你可以使用%in%操作符:

vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false

我将根据输出对选项进行分组。对于所有的例子,假设下面的向量。

v <- c('z', 'a','b','a','e')

检查是否存在:

%in%

> 'a' %in% v
[1] TRUE

任何()

> any('a'==v)
[1] TRUE

is.element ()

> is.element('a', v)
[1] TRUE

寻找第一次出现的情况:

匹配()

> match('a', v)
[1] 2

求所有以指数向量形式出现的情况:

()

> which('a' == v)
[1] 2 4

寻找所有的逻辑向量:

==

> 'a' == v
[1] FALSE  TRUE FALSE  TRUE FALSE

编辑: 由于评论中提到的原因,从列表中删除grep()和grepl()