我正在寻找一种在R中过滤字符向量的方法。我只想要保留那些包含任何数字或数字的行。应该过滤掉不包含数字的行。在完成过滤后,我想提取这些数字。我怎么能这样做?
答案 0 :(得分:3)
我们可以使用grep
匹配一个或多个非数字(\\D+
)从开头(^
)到结尾($
)的字符串,使用value = TRUE
和invert = TRUE
获取与模式
grep("^\\D+$", v1, value = TRUE, invert = TRUE)
#[1] "az1" "Abc2" "123"
或使用
grep("\\d+", v1, value = TRUE)
#[1] "az1" "Abc2" "123"
假设我们需要过滤掉只有数字
的情况grep("([A-Za-z].*[0-9])|[0-9].*[A-Za-z].*[0-9]", v1, value = TRUE)
#[1] "az1" "Abc2"
v1 <- c("az1", "AB", "Abc2", "123")