从R中的字符串中删除数字

时间:2015-11-17 11:03:17

标签: r gsub

我尝试使用函数gsub从字符串中删除除67之外的所有数字。

例如:

txt <- "A function 147832 for 67cleaning 67 data 6 7"

欲望输出:

txt <- "A function for 67cleaning 67 data"

我已尝试txt = gsub("[[:digit:]]", "", txt),但它会删除所有数字。

2 个答案:

答案 0 :(得分:1)

你可以这样做

x = unlist(strsplit(txt, split = '\\s+')) # split your string
paste0(x[Reduce(`|`, lapply(c('[A-Za-z]', '67'), grepl, x))], collapse = ' ') # use the list of regular expression to match the required pattern and put them all together

#[1] "A function for 67cleaning 67 data"

答案 1 :(得分:1)

它不是超级优雅,但你可以分三步完成:

 tmp <- gsub("67", "XX", "A function 147832 for 67cleaning 67 data 6 7")
 tmp <- gsub("\\d+", "", tmp)
 tmp <- gsub("XX", "67", tmp)
 tmp
 #"A function  for 67cleaning 67 data  "

首先用标记替换67的所有实例(例如,XX),然后删除所有其他剩余数字,最后再回到子67