闪亮的包装如何工作?

时间:2014-11-15 11:50:31

标签: r shiny shiny-server

我是闪亮包装的新手我试图使用githube中提供的示例:https://github.com/dipanjanS/MyShinyApps/tree/master/twitter-analysis

它一直给我错误,我也不明白服务器端和用户端之间的连接方式 我将解释这个例子: 它是一个应用程序,从用户那里接受一个单词然后收集与该单词相关的推文,然后计算发送分析,单词云并查看收集的推文。 首先是用户端将有一个文本输入,用户输入关键字:

 textInput("entity1", "Handle 1: ","#thrilled"),

用户界面中将有三个选项卡:

    tabPanel("Sentiment Analysis", plotOutput("sentiboxplot"),
   tabPanel("Word Clouds",h2(textOutput("entity1wc")),plotOutput("entity1wcplot"),h2(textOutput("entity2wc")),plotOutput("entity2wcplot")),
tabPanel("Entity 1 Raw tweets",tableOutput("tableentity1"))

服务器端通过收集推文从用户端获取输入,计算情绪,然后绘制图表,生成单词云,以及查看推文。 如代码中所述,执行应按此顺序开始:

1- entity1<-reactive({ if(input$actb>=0 ){
withProgress(session, min=1, max=15, expr={
for(i in 1:15) {
setProgress(message = '1- Calculation in progress',
detail = 'This may take a while...',
value=i)
Sys.sleep(0.1)
}
})}
entity1<-TweetFrame(input$entity1, input$maxTweets)}
)

2- entityscores<-reactive({
if(input$actb>=0 ){
withProgress(session, min=1, max=15, expr={
for(i in 1:15) {
setProgress(message = '2- Calculation in progress',
detail = 'This may take a while...',
value=i)
Sys.sleep(0.1)
}
})}
entityscores<-sentimentalanalysis(entity1()$text,entity2()$text,input$entity1,input$entity2)})

3- output$notweets<-renderPrint({
if(input$actb>=0 ){
withProgress(session, min=1, max=15, expr={
for(i in 1:15) {
setProgress(message = '3-Calculation in progress',
detail = 'This may take a while...',
value=i)
Sys.sleep(0.1)
}
})}
numoftweets(entity1(),entity2(),input$entity1,input$entity2)})

4- output$sentiboxplot<-renderPlot({
if(input$actb>=0 ){
withProgress(session, min=1, max=15, expr={
for(i in 1:15) {
setProgress(message = '4-Calculation in progress',
detail = 'This may take a while...',
value=i)
Sys.sleep(0.1)
}
})}
cutoff <- data.frame(yintercept=0, cutoff=factor(0))
sentiboxplot<-ggplot(entityscores(),aes(x=size,y=score))+
facet_grid(entity ~ .)+
geom_point(color = "black",size = 2, alpha = 1/2)+
geom_smooth(method = "loess",se=FALSE,col='red',size=1.5, alpha = 0.7)+
geom_hline(aes(yintercept=yintercept, linetype=cutoff), data=cutoff)+
xlab('Tweet number')+
ylab('Sentiment Score')+
theme_bw()
print(sentiboxplot)})
output$sentiheadtable<-renderTable({tab<-head(entityscores(),4)})

5- output$entity1wcplot<-renderPlot({
if(input$actb>=0 ){
withProgress(session, min=1, max=15, expr={
for(i in 1:15) {
setProgress(message = '5-Calculation in progress',
detail = 'This may take a while...',
value=i)
Sys.sleep(0.1)
}
})}
wordcloudentity(entity1()$text)})
output$tableentity1 <- renderTable({tab<-entity1()[1]})
]
})

但不是这种情况我编号在每一步中打印给用户的消息,以查看哪一个首先工作我发现它总是从4开始。这意味着首先计算按下的选项卡我的情况是情绪分析标签。换句话说,如果我按下显示单词云的标签2,它将从5开始,而不考虑第一步。 任何人都可以告诉我它为什么会这样? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

Alhamdulilah(感谢上帝)我找到了答案。 好的,首先,一旦应用程序运行,它将在选项卡情绪分析中,这是服务器端的第4步,它需要推文+情绪分数。所以序列将是4,2,1。 当我点击标签2&#34;单词云&#34;因为词云只需要推文,它将按顺序5然后进行1。 当我在标签3上的标签时,它将转到1 比设定它简单但有所作为