[英]Removing StopWords from a Character using R
考虑到我有下面提到的字符串;
str_input <- c("Mellanox,Asia, China, India, JAVA, United States, APIs")
我使用了下面提到的gsub代码,它删除了我特定的StopWords。
gsub(paste0("\\b(",paste(location_sw, collapse="|"),")\\b"), "", str_input)
其中,location_sw由我的停用词列表组成,如下所述
location_sw <- c('Rose', 'Java', 'JAVA', 'Mellanox', 'Microsoft', '144GiB', 'West',
'Amazon', 'Channel Asia', 'jClarity', 'APIs')
在使用上面提供的gsub代码时,我得到了下面提到的输出
",Asia, China, India, , United States, "
但是,我希望得到以下结果;
"Asia, China, India, United States"
我想在删除停用词后删除现有的逗号。 任何输入都会非常有用。
另一种方法是将字符串strsplit
为字符向量,然后相对于location_sw
获取setdiff
:
out <- setdiff(strsplit(str_input, split = ",\\s*")[[1]], location_sw)
out
#> [1] "Asia" "China" "India" "United States"
如有必要,我们可以将其paste
回角色:
paste(out, collapse = ", ")
#> [1] "Asia, China, India, United States"
你可以用
str_input <- c("Mellanox,Asia, China, India, JAVA, United States, APIs")
rx <- paste0("(?:,\\s*)*\\b(?:",paste(location_sw, collapse="|"),")\\b")
trimws(gsub(rx, "", str_input), whitespace = "[\\s,]")
## => [1] "Asia, China, India, United States"
(?:,\\\\s*)
将匹配0次或更多次逗号,后跟0或更多空格。
带有whitespace = "[\\\\s,]"
的trimw将删除前导和尾随空格和逗号。
base
选项:
paste(lapply(strsplit(str_input,",|,\\s"), function(x)
x[!x %in% location_sw])[[1]],collapse=", ")
[1] "Asia, China, India, United States"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.