我正在尝试获取R中字符串的第一个字符的索引。但是我搜索到的大多数答案都会检查整个字符串是否为grepl
大写。 Python可以很容易地做到这一点,但我还没有找到一个可以在R中执行此操作的库。
答案 0 :(得分:4)
假设您从以下内容开始:
x <- c("stRing", "strIng", "String", "sTRIng", "string")
您可以尝试:
sapply(gregexpr("[A-Z]", x), `[`, 1)
## [1] 3 4 1 2 -1
还有&#34; stringi&#34;包,您可以使用:
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
正如@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
答案 1 :(得分:0)
一个直接的方法是将每个字符串分成单个字母向量和测试,它是大写字母:
x <- c("stRing", "strIng", "String", "string", "sTRIng") # from the other answer
sapply(strsplit(x, ''), function(y) which(y %in% LETTERS)[1])
# [1] 3 4 1 NA 2