首页 > 解决方案 > 删除向量中包含 R 中纯数字的元素

问题描述

我有一个包含字符元素的向量,例如

"2-CONTROL", "DAN-COLOR", "3M", "DIPLOMVEJ 373", "ABE 34 HUN"

我想过滤掉字符串中具有独立数字的元素。如果数字附加到字母或连字符,则不应过滤。

上面的向量在过滤后将给出以下结果。

"2-CONTROL", "DAN-COLOR", "3M"

我曾尝试"\\b\\d+\\b"在 grepl 中使用,但它也会过滤掉"2-CONTROL"

标签: r

解决方案


1)用 X 替换每个不是数字且不是空格的字符,然后使用您的正则表达式:

pat <- "\\b\\d+\\b" # from question

x[!grepl(pat, gsub("[^[:space:][:digit:]]", "X", x))]
## [1] "2-CONTROL" "DAN-COLOR" "3M"

2)另一种可能性是在空格上拆分并拒绝包含所有数字元素的任何内容。

x[sapply(strsplit(x, "\\s+"), function(x) !any(grepl("^\\d+$", x)))]
## [1] "2-CONTROL" "DAN-COLOR" "3M"  

推荐阅读