从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
重新插入。
我正在尝试使用函数 gsub
.
例如:
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
重新插入。