闪亮的绘图不显示绘图结果

时间:2021-07-29 09:15:34

标签: r shiny

我想创建一个带有世界云的仪表板,但该图未显示在我闪亮的应用程序上。但是,我可以看到我的绘图与仪表板输入成功交互,并且可以在我的 Rstudio 上显示该绘图。

我的项目有两个文件,第一个是 test.R(编码 utf-8),我把 ui 和服务器放在那里。第二个是 glob.R (encoding CP950) ,我在这里导入数据并定义我的函数来绘制世界云。

test.R

library(shiny)
library(shinydashboard)

source('./test_gloable_nlp.R', local = TRUE)

# header
header <- dashboardHeader(title = 'ABC Delicate')
# sidebar
sidebar <- dashboardSidebar(
  sidebarMenu(
    menuItem("test", tabName = 'id_4', icon = icon('alien'))
    
  )
)
# body
body <- dashboardBody(
  tabItems(
    tabItem(tabName = 'id_4',
            fluidRow(
              box(
                textInput(
                  inputId = 'key_word',
                  label = NULL,
                  value = 'type in keyword'),
                
                sliderInput(
                  inputId = 'char_len',
                  label = '期望出現詞彙最短長度',
                  min = 0,
                  max = 50,
                  value = 1),
                
                sliderInput(
                  inputId = 'char_freq',
                  label = '期望最低詞彙出現最低頻率',
                  min = 0,
                  max = 50,
                  value = '1'),
                
              ), 
              box(plotOutput('wc'))
            )
    )
  )
)
# ui
ui = dashboardPage(header, sidebar, body)
# server
server <- function(input, output, session){
  output$wc = renderPlot({
    plot_word_cloud(df$excerpt, input$key_word, input$char_len, input$char_freq)
  })
  
  
}
#runapp
shinyApp(ui = ui, server = server)

glob.R

library(devtools)
library(jiebaR)
library(tm)
library(tmcn)
library(devtools)
library(wordcloud2)
library(tidyverse)

#load data####
setwd("C:/Users/user/Desktop/實習/工研院/環球瑞士工作/shiny")
df = readxl::read_xlsx('nlp.xlsx')

#function####
get_adj = function(x){
  stopifnot(inherits(x,"character"))
  index = names(x) %in% c('Ag','a','ad','an','b')
  x[index]
}

get_noun = function(x){
  stopifnot(inherits(x,"character"))
  index = names(x) %in% c("n","nr","nr1","nr2","nrj","nrf","ns","nsf","nt","nz","nl","ng",'x')
  x[index]
}

plot_word_cloud <- function(data, key_word, char_len, char_freq){
  
  cc = worker('tag')
  key_word_index = which(grepl(pattern = key_word, x = data) == TRUE)
  df_keywords = df[key_word_index,]
  excerpt_seg_adj = get_adj(cc[df_keywords$excerpt])
  adj_freq = freq(excerpt_seg_adj)
  
  adj_filter_len = adj_freq[which(unlist(lapply(adj_freq$char, nchar))>char_len),]
  filter_res = adj_filter_len %>% filter(freq > char_freq)
  res = wordcloud2(filter_res, fontFamily = "BiauKa")
  return(res)
}

但收到以下错误消息和输出。我可以在 Rstudio 中看到我的绘图结果,它可以与我的输入进行交互,但我只是没有出现在我的应用中。

Warning: Error in jiebaclass_tag_tag: CHAR() can only be applied to a 'CHARSXP', not a 'NULL'
  177: jiebaclass_tag_tag
  176: tagw
  175: tagging
  174: segment
  173: [.segment
  168: plot_word_cloud [./gloab.R#31]
  167: renderPlot [C:/Users/user/Desktop/實習/工研院/環球瑞士工作/shiny/test.R#51]
  165: func
  125: drawPlot
  111: <reactive:plotObj>
   95: drawReactive
   82: origRenderFunc
   81: output$wc
    1: runApp

enter image description here

0 个答案:

没有答案