web-dev-qa-db-ja.com

R-string1の最初の出現の後にstring2が続くかどうかをテストします

次の形式のR文字列があります

s = `"[some letters and numbers]_[a number]_[more numbers, letters, punctuation, etc, anything]"`

sに最初の位置に"_2"が含まれているかどうかを確認する方法が必要です。言い換えれば、最初の_記号の後、単一の数字は「2」ですか? Rでこれを行うにはどうすればよいですか?

複雑な正規表現を必要としているのでしょうか?

例:

39820432_2_349802j_32hfh = TRUE

43lda821_9_428fj_2f = FALSE(そこには_2がありますが、正しい場所にはありません)

52
StanLe
> grepl("^[^_]+_1",s)
[1] FALSE
> grepl("^[^_]+_2",s)
[1] TRUE

基本的に、_を除く最初のすべてを探してから、_2を探します。

greplの代わりにgrepを提案して、@ Ananda_Mahtoに+1します。

66
Julián Urbano

ここで「R-文字列に文字列が含まれているかどうかをテストする」という一般的な質問に答える価値があると思います。

そのためには、grep関数を使用します。

# example:
> if(length(grep("ab","aacd"))>0) print("found") else print("Not found")
[1] "Not found"
> if(length(grep("ab","abcd"))>0) print("found") else print("Not found")
[1] "found"
30
tucson