从str\u locate\u all in R中的多个位置提取“结束”位置?

从str\u locate\u all in R中的多个位置提取“结束”位置?,r,lapply,sapply,R,Lapply,Sapply,如果我们在字符串向量中定位一个子字符串,就像这样 library(stringr) library(dplyr) x <- c("ldksfABCskdlfj", "kABCz", "skdlfjlsjfABCksdfpjfkj") x %>% str_locate_all("ABC") 如何仅提取端点位置?i、 e.8、4、13 到目前为止我都试过了 差不多了。以下是一种方法: x %>% str_locate_all("ABC") %>

如果我们在字符串向量中定位一个子字符串,就像这样

library(stringr)
library(dplyr)

x <- c("ldksfABCskdlfj",
       "kABCz",
       "skdlfjlsjfABCksdfpjfkj")

x %>% str_locate_all("ABC")
如何仅提取端点位置?i、 e.8、4、13

到目前为止我都试过了
差不多了。以下是一种方法:

x %>% str_locate_all("ABC") %>% sapply(., function(x) x[,2])

差不多了。以下是一种方法:

x %>% str_locate_all("ABC") %>% sapply(., function(x) x[,2])

如果如示例所示,每个字符串中只有一个匹配项,则可以使用str_locate,这将避免使用任何循环来提取结束列,因为可以直接从返回的矩阵中提取子集

stringr::str_locate(x, "ABC")[, 2]
#[1]  8  4 13

如果如示例所示,每个字符串中只有一个匹配项,则可以使用str_locate,这将避免使用任何循环来提取结束列,因为可以直接从返回的矩阵中提取子集

stringr::str_locate(x, "ABC")[, 2]
#[1]  8  4 13
我们可以使用

library(stringr)
library(dplyr)
str_locate(x, "ABC") %>% 
        as_tibble %>% 
        pull(end)
 #[1]  8  4 13
我们可以使用

library(stringr)
library(dplyr)
str_locate(x, "ABC") %>% 
        as_tibble %>% 
        pull(end)
 #[1]  8  4 13