我在表格中有一列标题,并希望删除单独的表格/向量中列出的所有单词。
例如,标题表:
" Lorem ipsum dolor"
"坐下来,奉献adipiscing"
" elit,sed do eiusmod tempor"
" incididunt ut labore"
" et dolore magna aliqua。"
要删除:c(" Lorem"," dolore"," elit")
输出:
" ipsum dolor"
"坐下来,奉献adipiscing"
",sed do eiusmod tempor"
" incididunt ut labore"
" et magna aliqua。"
列入黑名单的单词可能会多次出现。
tm包具有此功能,但应用于wordcloud时。我需要的是保持列完整,而不是将所有行连接成一个字符串。当给出一组值作为模式时,正则表达式函数(gsub())似乎不起作用。 Oracle SQL解决方案也很有趣。
答案 0 :(得分:3)
body.onresize
这给出了:
lorem <- c("Lorem ipsum dolor",
"sit amet, consectetur adipiscing",
"elit, sed do eiusmod tempor",
"incididunt ut labore",
"et dolore magna aliqua.")
to.delete <- c("Lorem", "dolore", "elit")
output <- lorem
for (i in to.delete) {
output <- gsub(i, "", output)
}
答案 1 :(得分:2)
首先阅读数据:
dat <- c("Lorem ipsum dolor",
"sit amet, consectetur adipiscing",
"elit, sed do eiusmod tempor",
"incididunt ut labore",
"et dolore magna aliqua.")
todelete <- c("Lorem", "dolore", "elit")
我们可以通过一点智能粘贴来避免循环。 |
是一个左右,我们可以粘贴它,允许我们删除任何循环:
gsub(paste0(todelete, collapse = "|"), "", dat)
答案 2 :(得分:2)
您也可以使用stri_replace_all_fixed
:
library(stringi)
lorem <- c("Lorem ipsum dolor",
"sit amet, consectetur adipiscing",
"elit, sed do eiusmod tempor",
"incididunt ut labore",
"et dolore magna aliqua.")
to.delete <- c("Lorem", "dolore", "elit")
#just a simple function call
library(stringi)
stri_replace_all_fixed(lorem, to.delete, '')
输出:
[1] " ipsum dolor" "sit amet, consectetur adipiscing" ", sed do eiusmod tempor"
[4] "incididunt ut labore" "et magna aliqua."
答案 3 :(得分:2)
tm
- 包具有为此实现的功能:
tm:::removeWords.character
实施如下:
foo <- function(x, words){
gsub(sprintf("(*UCP)\\b(%s)\\b", paste(sort(words, decreasing = TRUE),
collapse = "|")), "", x, perl = TRUE)
}
哪个给你
gsub("(*UCP)\\b(Lorem|elit|dolore)\\b","", x, perl = TRUE)