R Shiny在本地工作,不适用于网络

时间:2017-12-13 16:07:50

标签: html r shiny

在本地,此代码有效,但我不知道为什么它在部署到shinyapps.io时不起作用

https://albertjeey.shinyapps.io/r_script/

输入是智能手机的名称(三星,iphone,xiaomi等)。滑块用于您想要从Twitter抓取的推文数量。然后单击“分析”等几秒钟,wordcloud,直方图和所有选项卡都应显示它们的内容。

用户界面:

library(shiny)

shinyUI(
pageWithSidebar(
headerPanel("Opinion Mining dengan Klasifikasi Naive Bayes"),

sidebarPanel(
  textInput("keyword", "Masukkan produk yang ingin dianalisis", ""),
  sliderInput ("tweetsize", "Jumlah tweets yang ingin dianalisis:",
              min=10, max=1000, value=100, step=10),
  actionButton("button1", "Analyze")
),

mainPanel(
  tabsetPanel(type="tab",
              tabPanel("WordCloud", plotOutput("wcplot")),
              tabPanel("Histogram", plotOutput("histplot")),
              tabPanel("Pie Chart", plotOutput("pieplot")),
              tabPanel("Data", tableOutput("dataplot")),
              tabPanel("Help",
                       HTML("<div><h4>Pada textfield yang tersedia di sisi kiri,
                            masukkan merk smartphone atau komputer yang
                            ingin diketahui sentimennya. Lalu, masukkan
                            jumlah tweet yang ingin dicari pada slider.
                            Setelah itu, tekan tombol 'analize' dan tunggu
                            hasil ditampilkan pada tab wordcloud, histogram, piechart,
                            dan data.</h4></div>")),
              tabPanel("About", textOutput("abouttext"))
  )
)
)
)

服务器:

library(shiny)
library(twitteR)
library(RCurl)
library(tm)
library(wordcloud)
library(RColorBrewer)
library(e1071)
library(RTextTools)
library(dplyr)
library(caret)
library(data.table)

shinyServer(
  function(input, output)
  {
local_file = "stopwords_id.txt"
local_file2= "training_tweets.csv"
consumer_key <- 'the code'
consumer_secret <- 'the code'
access_token <- 'the code'
access_secret <- 'the code'
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)

#crawl_tweets <- reactive ({ searchTwitter(input$keyword, n=input$tweetsize, lang='id') })

observeEvent(input$button1, {

  keyword <- paste(input$keyword, "filter:replies") 

  crawl_tweets <- searchTwitter(keyword, n=input$tweetsize, lang='id')

  testing_tweets <- sapply(crawl_tweets, function(x) x$getText())

  #hapus emoji
  #testing_tweets <- iconv(testing_tweets, "latin1", "ASCII", sub = "")

  #hapus link
  #testing_tweets <- gsub("http(s?)([^ ]*)", " ", testing_tweets, ignore.case = T)

  #hapus html &amp
  #testing_tweets <- gsub("&amp", "and", testing_tweets)

  #write.csv(testing_tweets, file='D:/Hobby Projects/SKRIPSI/R Script/testing_tweets.csv')
  write.csv(testing_tweets, file='testing_tweets.csv')

  #preprocessing
  stopwords_id <- "stopwords_id.txt"
  cStopwords_id <- readLines(stopwords_id)

  #hapus2 yang gak kepake
  testing_corpus <- Corpus(VectorSource(testing_tweets))
  testing_corpus_clean <- tm_map(testing_corpus, removePunctuation)
  testing_corpus_clean <- tm_map(testing_corpus_clean, content_transformer(tolower))
  testing_corpus_clean <- tm_map(testing_corpus_clean, tolower)
  testing_corpus_clean <- tm_map(testing_corpus_clean, removeNumbers)
  testing_corpus_clean <- tm_map(testing_corpus_clean, stripWhitespace)
  testing_corpus_clean <- tm_map(testing_corpus_clean, removeWords, c("cStopwords_id"))

  #naivebayes
  df_train <- read.csv("training_tweets.csv", stringsAsFactors = FALSE)
  df_test <- read.csv("testing_tweets.csv", stringsAsFactors = FALSE)

  df_train$class <- as.factor(df_train$class)

  train_corpus <- Corpus(VectorSource(df_train$text))
  test_corpus <- Corpus(VectorSource(df_test$x))

  train_corpus_clean <- tm_map(train_corpus, removePunctuation)
  train_corpus_clean <- tm_map(train_corpus_clean, content_transformer(tolower))
  train_corpus_clean <- tm_map(train_corpus_clean, tolower)
  train_corpus_clean <- tm_map(train_corpus_clean, removeNumbers)
  train_corpus_clean <- tm_map(train_corpus_clean, stripWhitespace)
  train_corpus_clean <- tm_map(train_corpus_clean, removeWords, c("cStopwords_id"))

  test_corpus_clean <- tm_map(test_corpus, removePunctuation)
  test_corpus_clean <- tm_map(test_corpus_clean, content_transformer(tolower))
  test_corpus_clean <- tm_map(test_corpus_clean, tolower)
  test_corpus_clean <- tm_map(test_corpus_clean, removeNumbers)
  test_corpus_clean <- tm_map(test_corpus_clean, stripWhitespace)
  test_corpus_clean <- tm_map(test_corpus_clean, removeWords, c("cStopwords_id"))

  train_dtm <- DocumentTermMatrix(train_corpus_clean)
  test_dtm <- DocumentTermMatrix(test_corpus_clean)

  convert_count <- function(x)
    {
    y <- ifelse(x > 0, 1,0)
    y <- factor(y, levels=c(0,1), labels=c("No", "Yes"))
    y
    }

  trainNB <- apply(train_dtm, 2, convert_count)
  testNB <- apply(test_dtm, 2, convert_count)

  classifier <- naiveBayes(trainNB, df_train$class, laplace = 1)

  pred <- predict(classifier, newdata=testNB)

  #write.csv(pred, file='D:/Hobby Projects/SKRIPSI/R Script/pred.csv')
  write.csv(pred, file='pred.csv')

  #wordcloud
  output$wcplot <- renderPlot({wordcloud(test_corpus_clean, random.order = F, max.words = 100, scale = c(4.5,1), colors=brewer.pal(8, "Dark2"))})

  #histogram
  #hist_df <- read.csv("D:/Hobby Projects/SKRIPSI/R Script/pred.csv", stringsAsFactors = FALSE)
  judul = paste("Sentimen Produk", input$keyword)
  hist_df <- read.csv("pred.csv", stringsAsFactors = FALSE)
  hist_df = hist_df[,c(2)]
  output$histplot <- renderPlot({ barplot(table(hist_df), main=judul) })

  #piechart
  pie_df = hist_df
  pie.freg <- table(pie_df)
  lbs = c("negatif", "netral", "positif")
  output$pieplot <- renderPlot({ pie(pie.freg, labes=lbs, main=judul) })

  #data
  df_pred <- read.csv("pred.csv", stringsAsFactors = FALSE)
  df_data <- paste(df_pred$x, df_test$x)
  output$dataplot <- renderTable({ df_data })

})

}

)

这些是日志:

2017-12-16T01:45:47.174483+00:00 shinyapps[245848]:      1: local
2017-12-16T13:29:59.356929+00:00 shinyapps[245848]: Server version: 1.5.10-6
2017-12-16T13:29:59.356961+00:00 shinyapps[245848]: LANG: en_US.UTF-8
2017-12-16T13:29:59.356967+00:00 shinyapps[245848]: shiny version: 1.0.5
2017-12-16T13:29:59.356991+00:00 shinyapps[245848]: rmarkdown version: NA
2017-12-16T13:29:59.356963+00:00 shinyapps[245848]: R version: 3.4.3
2017-12-16T13:29:59.356993+00:00 shinyapps[245848]: knitr version: NA
2017-12-16T13:29:59.357018+00:00 shinyapps[245848]: jsonlite version: 1.5
2017-12-16T13:29:59.357028+00:00 shinyapps[245848]: htmltools version: 0.3.6
2017-12-16T13:29:59.357020+00:00 shinyapps[245848]: RJSONIO version: NA
2017-12-16T13:29:59.553198+00:00 shinyapps[245848]: Using jsonlite for JSON processing
2017-12-16T13:30:17.410322+00:00 shinyapps[245848]: Loading required package: bitops
2017-12-16T13:30:17.500332+00:00 shinyapps[245848]: Loading required package: NLP
2017-12-16T13:30:17.566585+00:00 shinyapps[245848]: Loading required package: RColorBrewer
2017-12-16T13:30:17.625006+00:00 shinyapps[245848]: Loading required package: SparseM
2017-12-16T13:30:17.694363+00:00 shinyapps[245848]: 
2017-12-16T13:30:17.694366+00:00 shinyapps[245848]: Attaching package: ‘SparseM’
2017-12-16T13:30:17.694367+00:00 shinyapps[245848]: 
2017-12-16T13:30:17.695143+00:00 shinyapps[245848]: The following object is masked from ‘package:base’:
2017-12-16T13:30:17.695146+00:00 shinyapps[245848]:     backsolve
2017-12-16T13:30:17.695145+00:00 shinyapps[245848]: 
2017-12-16T13:30:17.695146+00:00 shinyapps[245848]: 
2017-12-16T13:30:20.619535+00:00 shinyapps[245848]: Attaching package: ‘data.table’
2017-12-16T13:30:20.619536+00:00 shinyapps[245848]: 
2017-7-12-16T13:30:20.619535+00:00 shinyapps[245848]: Attaching package: ‘data.table’
2017-12-16T13:30:20.619536+00:00 shinyapps[245848]: 
2017-12-16T13:30:20.619532+00:00 shinyapps[245848]: 
2017-12-16T13:30:20.619975+00:00 shinyapps[245848]: The following objects are masked from ‘package:dplyr’:
2017-12-16T13:30:20.619976+00:00 shinyapps[245848]: 
2017-12-16T13:30:20.619977+00:00 shinyapps[245848]: 
2017-12-16T13:30:20.619977+00:00 shinyapps[245848]:     between, first, last
2017-12-16T13:30:20.655022+00:00 shinyapps[245848]: [1] "Using direct authentication"
2017-12-16T13:30:22.062111+00:00 shinyapps[245848]: Warning: Error in gsub: input string 20 is invalid UTF-8
2017-12-16T13:30:22.066757+00:00 shinyapps[245848]: Stack trace (innermost first):
2017-12-16T13:30:22.066759+00:00 shinyapps[245848]:     82: gsub
2017-12-16T13:30:22.066760+00:00 shinyapps[245848]:     80: FUN
2017-12-16T13:30:22.066760+00:00 shinyapps[245848]:     81: removeWords.character
2017-12-16T13:30:22.066761+00:00 shinyapps[245848]:     79: tm_map.SimpleCorpus
2017-12-16T13:30:22.066761+00:00 shinyapps[245848]:     78: tm_map
2017-12-16T13:30:22.066762+00:00 shinyapps[245848]:     77: observeEventHandler [/srv/connect/apps/r_script/server.R#74]
2017-12-16T13:30:22.066762+00:00 shinyapps[245848]:     13: runApp
2017-12-16T13:30:22.066763+00:00 shinyapps[245848]:     11: doTryCatch
2017-12-16T13:30:22.066763+00:00 shinyapps[245848]:     12: fn
2017-12-16T13:30:22.066764+00:00 shinyapps[245848]:     10: tryCatchOne
2017-12-16T13:30:22.066764+00:00 shinyapps[245848]:      9: tryCatchList
2017-12-16T13:30:22.066765+00:00 shinyapps[245848]:      8: tryCatch
2017-12-16T13:30:22.066765+00:00 shinyapps[245848]:      7: connect$retry
2017-12-16T13:30:22.066766+00:00 shinyapps[245848]:      6: eval
2017-12-16T13:30:22.066766+00:00 shinyapps[245848]:      5: eval
2017-12-16T13:30:22.066767+00:00 shinyapps[245848]:      4: eval
2017-12-16T13:30:22.066767+00:00 shinyapps[245848]:      3: eval
2017-12-16T13:30:22.066768+00:00 shinyapps[245848]:      2: eval.parent
2017-12-16T13:30:22.066768+00:00 shinyapps[245848]:      1: local12-16T13:30:20.619532+00:00 shinyapps[245848]: 
2017-12-16T13:30:20.619975+00:00 shinyapps[245848]: The following objects are masked from ‘package:dplyr’:
2017-12-16T13:30:20.619976+00:00 shinyapps[245848]: 
2017-12-16T13:30:22.062111+00:00 shinyapps[245848]: Warning: Error in gsub: input string 20 is invalid UTF-8
2017-12-16T13:30:22.066757+00:00 shinyapps[245848]: Stack trace (innermost first):
2017-12-16T13:30:22.066759+00:00 shinyapps[245848]:     82: gsub
2017-12-16T13:30:22.066760+00:00 shinyapps[245848]:     80: FUN
2017-12-16T13:30:22.066760+00:00 shinyapps[245848]:     81: removeWords.character
2017-12-16T13:30:22.066761+00:00 shinyapps[245848]:     79: tm_map.SimpleCorpus
2017-12-16T13:30:22.066761+00:00 shinyapps[245848]:     78: tm_map
2017-12-16T13:30:22.066762+00:00 shinyapps[245848]:     77: observeEventHandler [/srv/connect/apps/r_script/server.R#74]
2017-12-16T13:30:22.066762+00:00 shinyapps[245848]:     13: runApp
2017-12-16T13:30:22.066763+00:00 shinyapps[245848]:     11: doTryCatch
2017-12-16T13:30:22.066763+00:00 shinyapps[245848]:     12: fn
2017-12-16T13:30:22.066764+00:00 shinyapps[245848]:     10: tryCatchOne
2017-12-16T13:30:22.066764+00:00 shinyapps[245848]:      9: tryCatchList
2017-12-16T13:30:22.066765+00:00 shinyapps[245848]:      8: tryCatch
2017-12-16T13:30:22.066765+00:00 shinyapps[245848]:      7: connect$retry
2017-12-16T13:30:22.066766+00:00 shinyapps[245848]:      6: eval
2017-12-16T13:30:22.066766+00:00 shinyapps[245848]:      5: eval
2017-12-16T13:30:22.066767+00:00 shinyapps[245848]:      4: eval
2017-12-16T13:30:22.066767+00:00 shinyapps[245848]:      3: eval
2017-12-16T13:30:22.066768+00:00 shinyapps[245848]:      2: eval.parent
2017-12-16T13:30:22.066768+00:00 shinyapps[245848]:      1: local

0 个答案:

没有答案