596

ベクトルに特定の値が含まれているかどうかを確認するにはどうすればよいですか?

4

7 に答える 7

564

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
于 2009-07-23T02:25:24.957 に答える
196

is.element()より読みやすいコードになり、と同じです%in%

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
于 2013-10-02T12:03:47.433 に答える
106

出力に基づいてオプションをグループ化します。すべての例について、次のベクトルを想定します。

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

プレゼンスを確認する場合:

%の%

> '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()を削除する

于 2017-06-07T12:52:46.413 に答える
71

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
于 2009-08-20T22:12:04.627 に答える
37

%in%次の演算子を使用できます。

vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
于 2009-07-23T02:25:52.850 に答える
20

また、次のように使用できる要素「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))]
于 2013-08-18T01:12:55.913 に答える
11

私はこの目的のために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

これらの関数では大文字と小文字が区別されます。

于 2015-12-03T01:02:53.813 に答える