如何提取和替换R中的模式

如何提取和替换R中的模式,r,R,我试图使用regexec y <- c("abcd-efgh/xyz/123456789", "123456789", "abcd-efgh", "123456789") m <- regexec("\\d+$", y) new_y <- unlist(regmatches(y, m)) 但我希望它看起来像这样 > new_y [1] "123456789" "123456789" NA "123456789" i、 e.如果找不到指定的模式,则应具有NA值。 有人能

我试图使用
regexec

y <- c("abcd-efgh/xyz/123456789", "123456789", "abcd-efgh", "123456789")
m <- regexec("\\d+$", y)
new_y <- unlist(regmatches(y, m))
但我希望它看起来像这样

> new_y
[1] "123456789" "123456789" NA "123456789"
i、 e.如果找不到指定的模式,则应具有NA值。 有人能告诉我如何做到这一点或建议我实现这一点的另一种方法吗?

如何:

new_y = gsub("^.*[^0-9]","",y)
new_y[new_y == ""] <- NA
那么:

new_y = gsub("^.*[^0-9]","",y)
new_y[new_y == ""] <- NA
那么:

new_y = gsub("^.*[^0-9]","",y)
new_y[new_y == ""] <- NA
那么:

new_y = gsub("^.*[^0-9]","",y)
new_y[new_y == ""] <- NA
你可以试试:

ifelse(grepl("[[:digit:]]", y) == TRUE, gsub("[^[:digit:]]","", y), NA)
你可以试试:

ifelse(grepl("[[:digit:]]", y) == TRUE, gsub("[^[:digit:]]","", y), NA)
你可以试试:

ifelse(grepl("[[:digit:]]", y) == TRUE, gsub("[^[:digit:]]","", y), NA)
你可以试试:

ifelse(grepl("[[:digit:]]", y) == TRUE, gsub("[^[:digit:]]","", y), NA)
使用:
库(“stringr”);y“123456789”123456789“NA”123456789“
使用:
库(“stringr”);y“123456789”123456789“NA”123456789“
使用:
库(“stringr”);y“123456789”123456789“NA”123456789“
使用:
库(“stringr”);y“123456789”123456789“NA”123456789“