如何在R中找到最后一个“)”的索引

时间:2017-06-01 04:40:22

标签: r

我有一个R字符串。

 a<- c("hi this is ( learning) R (analytics) and")

我想得到最后一个“)”括号的索引。上面的字符串模式可以是任何类型。我正在尝试这样的事情:

     sapply(gregexpr("\\)", a), '[', 1)

但是,上面的语句正在返回第一个“(”的索引值。也不确定这是否也是有效的方式。

2 个答案:

答案 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