我有一个包含文本的列表,其中每个元素都是一个文本。而文本则是由单词向量组成的。因此,我有一列向量的列表。
我正在对此进行一些文本挖掘。
现在,我正在尝试提取单词,并且这些单词位于单词“no”的后面。我转换了我的向量,所以现在它们是由两个单词组成的向量。例如:
因此,我有一个公式可以提取“no”后面的单词(在第一个向量中会是“more”)。但是当我的文本中有多个“no”时,它不起作用。
以下是我的代码:
list(c("want friend", "friend funny", "funny nice", "nice glad", "glad become", "become no", "no more", "more guys"), c("no comfort", "comfort written", "written conduct","conduct prevent", "prevent manners", "matters no", "no one", "one want", "want be", "be fired"))
我的目标是拥有一个向量列表,它将如下所示:
list(c("more"), c("comfort", "one"))
因此,我能够通过liste[i]来查看结果向量中的文本i。因此,我有一个公式可以提取“no”后面的单词(在第一个向量中会是“more”)。但是当我的文本中有多个“no”时,它不起作用。
以下是我的代码:
liste_negation <- vector(length = length(data))
for (i in 1:length(data)){
for (j in 1:length(data[[i]])){
if (startsWith((data[[i]])[[j]], 'no') == TRUE){
liste_neg[i] <- c(liste_neg[i], tail(strsplit((data[[i]])[[j]],split=" ")[[1]],1))
} else{
liste_neg[i] <- c(liste_neg[i])
}
liste_negation[[i]] <- c(liste_neg[[i]])
}
}
当只有一个“no”时,该向量有效:
data <- list(c("want friend", "friend funny", "funny nice", "nice glad", "glad become", "become no", "no more", "more guys"), c("no comfort", "comfort written", "written conduct","conduct prevent", "prevent manners", "matters no", "no one", "one want", "want be", "be fired"))
data
liste_neg <- c()
liste_negation <- vector(length = length(data))
if (startsWith((data[[1]])[[9]], 'no') == TRUE){
liste_neg[1] <- c(liste_neg[1], tail(strsplit((data[[1]])[[9]],split=" ")[[1]],1))
}
liste_negation[[1]] <- c(liste_neg[[1]])
但是如果我尝试使用循环来适应这个向量中的每个元素,并且文本中有多个“no”,那么它就无法正常工作。
代码:
liste_neg <- c()
liste_negation <- vector(length = length(data))
for (j in 1:length(data[[2]])){
if (startsWith((data[[2]])[[j]], 'no') == TRUE){
liste_neg[2] <- append(liste_neg[2], tail(strsplit((data[[2]])[[j]],split=" ")[[1]],1))
}
}
liste_neg
liste_negation[[2]] <- c(liste_neg[[2]])
liste_negation
警告信息:
Warning message:
In liste_neg[2] <- append(liste_neg[2], tail(strsplit((data[[2]])[[j]], :
number of items to replace is not a multiple of replacement length
> liste_neg
[1] NA "comfort"
> liste_negation[[2]] <- c(liste_neg[[2]])
> liste_negation
[1] "FALSE" "comfort"
你可以看到,我只有第二个单词在那里。
我尝试了很多方法,也试图将代码拆分并一步一步地运行和处理它,但是在早上花费了所有时间后,我仍然没有找到解决方案。
有人有想法来帮助我吗?
提前谢谢(对不起我的英语不好,我是法国人^^')