将带有textInput值的searchTwitter的值传递给get_nrc_sentiment

时间:2018-11-10 07:46:41

标签: r shiny r-markdown

我打算做一个在线Twitter情绪分析器,用户可以使用flexdashboard自己输入搜索词。这是代码。

#Getting search term
textInput("data", label = "Enter search term", value = "", width = NULL, placeholder = NULL)
sliderInput("maxTweets", "Number of recent tweets to use for analysis:", min = 10, max = 1000, value = 500)
actionButton("enter", label = "Enter")

twt <- reactive({
  if(input$enter!=0){
      isolate({
        twt <- searchTwitter(input$data, n=input$maxTweets, lang = "en", resultType = "recent")
      })
    }
  })

#print tweets searched
twt

这是问题所在。当我运行下面的代码时,发生错误“ get_nrc_sentiment中的错误:数据必须是字符向量。”。我之前尝试过map_chr和as.character,但没有可供选择的列。

#Get sentiment 
s <- reactive({
  s<- get_nrc_sentiment(twt())
  })

#Print output
s 

2 个答案:

答案 0 :(得分:0)

正如我在评论中所提到的,我强烈建议转到twitteR rtweet上的Github page

  

这是twitteR相对悠闲的弃用期的开始,赞成使用rtweet。请开始寻找切换到该软件包的方法。如果您有任何疑问,请联系我自己或@mkearney

对该存储库的最后一次提交是2年前。

如果您仍然想使用twitteR

twt <- searchTwitter(input$data, n=100, lang = "en", resultType = "recent")
twt <- twiListToDF(twt) # turn data.frame into a list
twt$text <- as.character(twt$text) # ensure it's a character vector

class(twt)
class(twt$text)

syuzhet::get_nrc_sentiment(txt$text)

您必须确保它是1)矢量类型2)字符类型

syuzhet::get_nrc_sentiment(as.factor(c("Hello", "World")))
#> Error in syuzhet::get_nrc_sentiment(as.factor(c("Hello", "World"))) : 
  Data must be a character vector.
syuzhet::get_nrc_sentiment(list("Hello", "World"))
#> Error in syuzhet::get_nrc_sentiment(list("Hello", "World")) : 
  Data must be a character vector.

答案 1 :(得分:0)

这是我的答案。

```{r}
#Getting search term
textInput("data", label = "Enter search term", value = "")
actionButton("enter", label = "Enter")

twt <- reactive({
  if(input$enter!=0){
      isolate({
        return(search_tweets(input$data, n=100, lang = "en", include_rts = FALSE))
      })
    }
  })
```  

````{r}
#Get sentiment score of tweets
s <- reactive({
  return(get_nrc_sentiment(twt()$text))
  })
#Print sentiment score
renderTable(head(s()))
```