我试图在R中找到ANYALPHA SAS函数的等价物。该函数在字符串中搜索字母字符,并返回找到该字符的第一个位置。
示例:查看以下字符串'123456789A',ANYALPHA函数将返回10,因为第一个字母字符位于字符串中的第10位。我想在R中复制这个功能但是还没弄清楚。无论如何,我都需要搜索任何字母字符(即[:alpha:])
感谢您提供的任何帮助!
答案 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"