获取R中字符串的第一个大写字母的索引?

aht*_*rix 2 string indexing r uppercase

我正在尝试获取 R 中字符串的第一个字符的索引。但是我搜索过的大部分答案都是检查整个字符串是否为大写grepl。Python 可以轻松做到这一点,但我还没有找到可以在 R 中做到这一点的库。

A5C*_*2T1 5

假设您从以下内容开始:

x <- c("stRing", "strIng", "String", "sTRIng", "string")
Run Code Online (Sandbox Code Playgroud)

你可以试试:

sapply(gregexpr("[A-Z]", x), `[`, 1)
## [1]  3  4  1  2 -1
Run Code Online (Sandbox Code Playgroud)

还有“stringi”包,您可以使用它:

library(stringi)
stri_locate_first_regex(x, "[A-Z]")
##      start end
## [1,]     3   3
## [2,]     4   4
## [3,]     1   1
## [4,]     2   2
## [5,]    NA  NA
Run Code Online (Sandbox Code Playgroud)

正如@lmo 在评论中指出的那样,regexpr也可以工作并且不需要sapply

regexpr("[A-Z]", x)
## [1]  3  4  1  2 -1
## attr(,"match.length")
## [1]  1  1  1  1 -1
## attr(,"useBytes")
## [1] TRUE
Run Code Online (Sandbox Code Playgroud)