当我知道它为真时,%in%返回FALSE

时间:2018-04-24 15:24:30

标签: r nlp tidytext

相关文件:

biggie

positive

我正在进行一些自然语言处理,并尝试使用%in%check来检查一个列表中的单词是否在另一个列表中。问题是,当我知道应该至少有几个TRUE返回时,它返回所有内容为FALSE。我想知道问题是否与我正在使用的对象类型有关?虽然当我运行测试时,一切都是一个角色对象,所以我认为这应该不是问题。这是我的代码:

library(dplyr)
library(tokenizers)
library(tidytext)

biggie <- read.csv("C:/Users/My.Name/Desktop/biggie.csv", stringsAsFactors=FALSE)

colnames(biggie)[1] <- 'biggie'



bigsplit <- biggie %>% 
  unnest_tokens(word, biggie)

pos <- read.csv("C:/Users/My.Name/Desktop/positive.csv", stringsAsFactors = FALSE)

positive <- function(data){
  pos_count <- 0
  for(i in 1:nrow(data)){
    if (data[i,1] %in% pos){
      pos_count = pos_count + 1
    }
  }
  return(pos_count/nrow(data)
}

在这里我找到了一种解决方法,但我觉得它会在函数中添加不必要的循环/步骤,并且需要比我想要的更多的计算能力:

#Tests
bigsplit[1,1] = "abound"
bigsplit[1,1] %in% pos #Returns FALSE, but I would expect TRUE
bigsplit[1,1] %in% pos[1,1] #Returns TRUE

#NEW FUNCTION
positive <- function(data){
  pos_count = 0
  for(i in 1:nrow(data)){
    match_this <- data[i,1]
    for(i in 1:nrow(pos)){
      if(match_this %in% pos[i,1]){
        pos_count <- pos_count + 1
      }
    }
  }
  return(pos_count/nrow(data))
}

如果有人对这些问题有任何提示,我真的很感激听到他们。谢谢!

0 个答案:

没有答案