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

Remove numbers from string in R

我正在尝试使用函数 gsub.

从字符串中删除除 67 以外的所有数字

例如:

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

期望输出:

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

我试过 txt = gsub("[[:digit:]]", "", txt),但它会删除所有号码。

你可以这样做

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"

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

 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 重新插入。