如何从R中的列中的列表中删除单词

时间:2015-12-08 14:52:24

标签: regex r oracle text mining

我在表格中有一列标题,并希望删除单独的表格/向量中列出的所有单词。

例如,标题表:

" 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解决方案也很有趣。

4 个答案:

答案 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)