查找字符串中字符的位置

时间:2015-10-14 20:15:26

标签: r string

我试图在R中找到ANYALPHA SAS函数的等价物。该函数在字符串中搜索字母字符,并返回找到该字符的第一个位置。

示例:查看以下字符串'123456789A',ANYALPHA函数将返回10,因为第一个字母字符位于字符串中的第10位。我想在R中复制这个功能但是还没弄清楚。无论如何,我都需要搜索任何字母字符(即[:alpha:])

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:2)

这是anyalpha功能。我添加了一些额外的功能。您可以在n参数中指定所需的最大匹配数,默认为1。您还可以使用value=TRUE指定您希望位置或值本身:

anyalpha <- function(txt, n=1, value=FALSE) {
  txt <- as.character(txt)
  indx <- gregexpr("[[:alpha:]]", txt)[[1]]
  ret <- indx[1:(min(n, length(indx)))]

  if(value) {
    mapply(function(x,y) substr(txt, x, y), ret, ret)
    } else {ret}
}

#test
x <-  '123A56789BC'
anyalpha(x)
#[1] 4
anyalpha(x, 2)
#[1]  4 10
anyalpha(x, 2, value=TRUE)
#[1] "C" "A"