使用gsub在r中进行字符串过滤
以向量为例使用gsub在r中进行字符串过滤,r,string,gsub,R,String,Gsub,以向量为例 v<- 'I l@ove d**^%ata 33-99//""(Sci"ence==+)' 任何帮助都将不胜感激。我们匹配一个或多个非字母或空格的字符,并将其替换为'。[[:alpha:][]+本身匹配一个或多个字母字符。但是,假设我们需要做与之相反的事情,即匹配一个或多个非字母的字符,使用[^[:alpha:]+,即在第一个[中使用^否定匹配。这里我们还需要空格。没有空格,我们得到“IlovedataScience”。因此,在匹配中也使用它,即[^[:alpha:]]+
v<- 'I l@ove d**^%ata 33-99//""(Sci"ence==+)'
任何帮助都将不胜感激。我们匹配一个或多个非字母或空格的字符,并将其替换为
'
。[[:alpha:][]+
本身匹配一个或多个字母字符。但是,假设我们需要做与之相反的事情,即匹配一个或多个非字母的字符,使用[^[:alpha:]+
,即在第一个[
中使用^
否定匹配。这里我们还需要空格。没有空格,我们得到“IlovedataScience”
。因此,在匹配中也使用它,即[^[:alpha:]]+
gsub("[^[:alpha:] ]+", "", v1)
#[1] "I love data Science"
或者使用[[:punct:]
匹配任何标点符号并替换为'
或者,我们可以将字母表指定为[A-Za-z]
(如@alistaire评论的那样),而不是[[:alpha:]
更新
如果OP希望每个单词的起始字母都是大写
gsub("\\b(.)", "\\U\\1", gsub('[^A-Za-z ]', '', v1), perl=TRUE)
#[1] "I Love Data Science"
数据
v1我们匹配一个或多个非字母表或空格的字符,并将其替换为'
。[[:alpha:]+
本身匹配一个或多个字母表字符。但是,假设我们需要做相反的操作,即匹配一个或多个非字母表字符,请使用[^[:alpha:]]+
,即第一个[
内的^
否定匹配。这里我们还需要空格。没有空格,我们会得到“IlovedataScience”
。因此,在匹配中也使用它,即[^[:alpha:]+
gsub("[^[:alpha:] ]+", "", v1)
#[1] "I love data Science"
或者使用[[:punct:]
匹配任何标点符号并替换为'
或者,我们可以将字母表指定为[A-Za-z]
(如@alistaire评论的那样),而不是[[:alpha:]
更新
如果OP希望每个单词的起始字母都是大写
gsub("\\b(.)", "\\U\\1", gsub('[^A-Za-z ]', '', v1), perl=TRUE)
#[1] "I Love Data Science"
数据
v1这里有一个选项,它只显式替换出现在输入向量中的特殊字符:
chars <- c("@", "*", "^", "%", "/", "\"", "=", "+", "d", "(", ")", "-")
gsub(paste("\\", chars, sep="", collapse="|"), "", statement)
[1] "I love data Science"
chars这里有一个选项,它只显式替换出现在输入向量中的特殊字符:
chars <- c("@", "*", "^", "%", "/", "\"", "=", "+", "d", "(", ")", "-")
gsub(paste("\\", chars, sep="", collapse="|"), "", statement)
[1] "I love data Science"
chars是我要发布的一个等价物:gsub(“[^A-Za-z]”,v1)
这是一个总括性解决方案,可能对OP有效,但如果需求发生变化,则很容易中断。@TimBiegeleisen我收回您更改解决方案时的评论。@MilanAmrutJoshi当然,我会添加更多内容description@RHertel谢谢,我没有注意到。更正了。我要发布的一个等价物:gsub(“[^A-Za-z]”,v1)
这是一个总括性解决方案,可能对OP有效,但如果需求发生变化,则很容易中断。@TimBiegeleisen我收回您更改解决方案时的评论。@MilanAmrutJoshi当然,我会添加更多内容description@RHertel谢谢,我没注意到。更正了。
chars <- c("@", "*", "^", "%", "/", "\"", "=", "+", "d", "(", ")", "-")
gsub(paste("\\", chars, sep="", collapse="|"), "", statement)
[1] "I love data Science"