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

时间:2017-04-10 16:21:41

标签: r string indexing uppercase

我正在尝试获取R中字符串的第一个字符的索引。但是我搜索到的大多数答案都会检查整个字符串是否为grepl大写。 Python可以很容易地做到这一点,但我还没有找到一个可以在R中执行此操作的库。

2 个答案:

答案 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
相关问题