gpt4 book ai didi

R 使用 %in% 从字符向量中删除停用词

转载 作者:行者123 更新时间:2023-12-04 21:53:09 25 4
gpt4 key购买 nike

我有一个包含字符串的数据框,我想从中删除停用词。我试图避免使用 tm打包,因为它是一个大型数据集和 tm好像跑的有点慢。我正在使用 tm stopword字典。

library(plyr)
library(tm)

stopWords <- stopwords("en")
class(stopWords)

df1 <- data.frame(id = seq(1,5,1), string1 = NA)
head(df1)
df1$string1[1] <- "This string is a string."
df1$string1[2] <- "This string is a slightly longer string."
df1$string1[3] <- "This string is an even longer string."
df1$string1[4] <- "This string is a slightly shorter string."
df1$string1[5] <- "This string is the longest string of all the other strings."

head(df1)
df1$string1 <- tolower(df1$string1)
str1 <- strsplit(df1$string1[5], " ")

> !(str1 %in% stopWords)
[1] TRUE

这不是我要找的答案。我正在尝试获取不在 stopWords 中的单词的向量或字符串向量。

我究竟做错了什么?

最佳答案

您没有正确访问列表,也没有从 %in% 的结果中取回元素。 (它给出了 TRUE/FALSE 的逻辑向量)。你应该做这样的事情:

unlist(str1)[!(unlist(str1) %in% stopWords)]

(或者)
str1[[1]][!(str1[[1]] %in% stopWords)]

为全 data.frame df1,你可以这样做:
'%nin%' <- Negate('%in%')
lapply(df1[,2], function(x) {
t <- unlist(strsplit(x, " "))
t[t %nin% stopWords]
})

# [[1]]
# [1] "string" "string."
#
# [[2]]
# [1] "string" "slightly" "string."
#
# [[3]]
# [1] "string" "string."
#
# [[4]]
# [1] "string" "slightly" "shorter" "string."
#
# [[5]]
# [1] "string" "string" "strings."

关于R 使用 %in% 从字符向量中删除停用词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15253798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com