如何在具有两个数据帧的R中使用apply?
背景 我有一个数据框,有大约1百万行文本。我想替换大量定制的stopwords,这是TM软件包无法处理的。该列表由约37K个单词组成。我有下面的代码可以工作,需要一段时间,但是我想用apply函数来改进代码 问题 我不知道如何在适用的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 <
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\\>"