web-dev-qa-db-fra.com

R - teste si la première occurrence de string1 est suivie de string2

J'ai une chaîne R, au format

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

Je veux simplement un moyen de vérifier si s contient "_2" en première position. En d'autres termes, après le premier _ symbole, le numéro unique est-il un "2"? Comment est-ce que je fais ceci dans R?

Je suppose que j'ai besoin d'une expression de regex compliquée?

Exemples:

39820432_2_349802j_32hfh = TRUE

43lda821_9_428fj_2f = FALSE _ (remarquez qu'il y a un _2 là-bas, mais pas au bon endroit)

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

fondamentalement, cherchez tout au début sauf _, puis le _2.

+1 à @Ananda_Mahto pour avoir suggéré grepl au lieu de grep.

66
Julián Urbano

Je pense que cela vaut la peine de répondre à la question générique "R - test si la chaîne contient une chaîne" ici.

Pour cela, utilisez la fonction 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