我有一个R字符串。
a<- c("hi this is ( learning) R (analytics) and")
我想得到最后一个“)”括号的索引。上面的字符串模式可以是任何类型。我正在尝试这样的事情:
sapply(gregexpr("\\)", a), '[', 1)
但是,上面的语句正在返回第一个“(”的索引值。也不确定这是否也是有效的方式。
答案 0 :(得分:3)
使用stringi
包及其stri_locate_last_*
功能。由于此处我们不是在寻找regex
,而是针对固定模式,我们使用stri_locate_last_fixed
:
require(stringi)
stri_locate_last_fixed(a,")")
# start end
#[1,] 36 36
以上是完全矢量化和C实现的,所以a
可以有一个&gt;长度,它可能非常有效。
答案 1 :(得分:0)
我们可以使用base R
方法
nchar(sub("[)][^)]*$", "", a))+1
#[1] 36
或stringr
library(stringr)
tail(str_locate_all(a, "[)]")[[1]],1)
# start end
#[2,] 36 36