如何在具有两个数据帧的R中使用apply?

如何在具有两个数据帧的R中使用apply?,r,apply,stop-words,R,Apply,Stop Words,背景 我有一个数据框,有大约1百万行文本。我想替换大量定制的stopwords,这是TM软件包无法处理的。该列表由约37K个单词组成。我有下面的代码可以工作,需要一段时间,但是我想用apply函数来改进代码 问题 我不知道如何在适用的apply函数中使用来自两个数据帧的内容。这是我的密码: stopwords <- read.table("stopwords.csv", header=TRUE, quote="\"", stringsAsFactors=FALSE) corpus <

背景

我有一个数据框,有大约1百万行文本。我想替换大量定制的stopwords,这是TM软件包无法处理的。该列表由约37K个单词组成。我有下面的代码可以工作,需要一段时间,但是我想用apply函数来改进代码

问题

我不知道如何在适用的apply函数中使用来自两个数据帧的内容。这是我的密码:

stopwords <- read.table("stopwords.csv", header=TRUE, quote="\"", stringsAsFactors=FALSE)
corpus <- read.delim("corpus.txt", header=TRUE, stringsAsFactors=FALSE)

for(i in 1:nrow(stopwords)){
  corpus$text <- gsub(paste("\\<",stopwords$list[i],"\\>", sep=""), "", corpus$text)
  message(paste(i, stopwords$list[i], sep=" - ")) #Show in console
}

stopwords您可以尝试以下矢量化方法:

# create a string of stopwords wrapped in `\\<` and `\\>`
x <- paste(paste0("\\<", stopwords$list, "\\>"), collapse = "|")
# use x to replace the words using gsub
corpus$text <- gsub(x, "", corpus$text)
#创建一个用`\\`

尖括号的用途是什么?它是一个正则表达式,只匹配整个单词,否则部分单词会被替换。我得到这个错误:gsub中的错误(粘贴(粘贴0(\\”),折叠=“|”),:断言'tree->num_tags==num_tags'在执行regexp:file'tre compile.c'时失败,第行634@RUser,如果您只运行
x会怎么样?我感谢您的帮助,谢谢!它可以工作,并为我提供一个包含上述所有单词的字符向量。例如,[1]“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\将其保存到
x
后,当您执行
corpus$text时,我确实会收到以下错误:gsub中的错误(粘贴(x,“,corpus$text)):缺少参数“x”,没有默认值。我将在问题中添加一些示例数据。
> ( stopwords <- letters[1:5] )
#[1] "a" "b" "c" "d" "e"

paste(paste0("\\<", stopwords, "\\>"), collapse = "|")
#[1] "\\<a\\>|\\<b\\>|\\<c\\>|\\<d\\>|\\<e\\>"