【发布时间】:2017-11-02 08:30:12
【问题描述】:
我正在寻找一种方法来过滤 R 中的字符向量。我只想保留那些包含任何数字或数字的行。不包含数字的行应该被过滤掉。完成过滤后,我想提取这些数字。我怎么能这样做?
【问题讨论】:
-
发帖之前,我只是想确认一下。假设你有像“123”这样的字符串,你会把它过滤掉吗
-
不,我确实想留下它。不管多少位数,我只想过滤掉不包含任何数字的行。
标签: r
我正在寻找一种方法来过滤 R 中的字符向量。我只想保留那些包含任何数字或数字的行。不包含数字的行应该被过滤掉。完成过滤后,我想提取这些数字。我怎么能这样做?
【问题讨论】:
标签: r
我们可以使用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")
【讨论】: