@Rui-Arradas has already given the answer in the comments, this is just a elaboration. First, let’s create an example with more phrases.
string.vector <- c(
"gnoll: Você tem acesso total a esta informação.",
"stack: Você tem acesso parcial a esta informação.",
"fnord: Você não tem nivel de acesso a esta informação.",
"fnord: Você poderia ter acesso a esta informação."
)
> string.vector
[1] "gnoll: Você tem acesso total a esta informação."
[2] "stack: Você tem acesso parcial a esta informação."
[3] "fnord: Você não tem nivel de acesso a esta informação."
[4] "fnord: Você poderia ter acesso a esta informação."
grep
will give you the indexes (positions) in which the pattern you are looking for was found. grepl
will give you TRUE/FALSE for all positions:
> grep('fnord', string.vector)
[1] 3 4
> grepl('fnord', string.vector)
[1] FALSE FALSE TRUE TRUE
strsplit generates a list with the strings separated according to the criteria you have established (scores and spaces, in this case):
split.list <- strsplit(string.vector, "[[:punct:] ]")
> split.list
[[1]]
[1] "gnoll" "" "Você" "tem" "acesso"
[6] "total" "a" "esta" "informação"
[[2]]
[1] "stack" "" "Você" "tem" "acesso"
[6] "parcial" "a" "esta" "informação"
[[3]]
[1] "fnord" "" "Você" "não" "tem"
[6] "nivel" "de" "acesso" "a" "esta"
[11] "informação"
[[4]]
[1] "fnord" "" "Você" "poderia" "ter"
[6] "acesso" "a" "esta" "informação"
Applying grep and grepl here will give you the same result, because it is being indicated which items in the list have the search key:
> grep('fnord', split.list)
[1] 3 4
> grepl('fnord', split.list)
[1] FALSE FALSE TRUE TRUE
You can use lapply to apply grep/grepl to each element in the list
> lapply(split.list, grep, pattern = 'fnord')
[[1]]
integer(0)
[[2]]
integer(0)
[[3]]
[1] 1
[[4]]
[1] 1
> lapply(split.list, grepl, pattern = 'fnord')
[[1]]
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[[2]]
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[[3]]
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[[4]]
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
The package stringr
has friendly functions to work with text strings. Check the vignette of it on regular expressions (in English).
grepl("fnord", x)
. Beholdhelp("regexp")
. Note:grepl
is thegrep
l. In addition, it is known to use patterns such as"[[:punct:] ]"
you won’t find regular expressions hard to learn.– Rui Barradas
I didn’t even know there were "regular expressions"
– Márcio Mocellin