我有一个闪亮的应用程序基本上解析用户上传的.txt
文件(请参阅this question我询问有关数据输入和解析功能),然后通过调用一些绘图函数生成几个绘图位于shinyServer
的{{1}}来电之上。
我的server.R脚本中调用的函数是:
server.R
我可以成功获取tabPanel 1中的绘图,以显示parseR()返回的数据帧中的因子级别,但我不知道如何使用它来实际更新绘图。
我的问题是,如何根据用户输入更新地图?
以下是 parseR() # Returns a dataframe (which is the result of parsing
the user input entered in `fileInput) ([see here][1] for details)
senderPosts() # Returns a plot that is shown in tabPanel 1
wordFreq() # Returns a plot that is shown in tabPanel 2
chatCloud() # Returns a plot that is shown in tabPanel 3
:
server.R
ui.R
shinyServer(function(input, output, session) {
data <- reactive({
req(input$file1)
inFile <- input$file1
df <- parseR(file=inFile$datapath) # Call my parser function
updateSelectInput(session, inputId = 'sender', label = 'Sender',
choices = levels(df$sender), selected = levels(df$sender))
return(df)
})
# Main page
output$contents <- renderTable({
head(data(), 25)
})
# tabPanel 1
output$postCount <-renderPlot({
senderPosts(file=input$file1$datapath)
})
# tabPanel 2
output$wordCount <-renderPlot({
wordFreq(file=input$file1$datapath)
})
# tabPanel 3
output$chatCloud <-renderPlot({
chatCloud(file=input$file1$datapath)
})
})
答案 0 :(得分:1)
正如我先提到的那样,您不希望将updateInput保留在Reactive功能中。这是因为反应性是懒惰的评价。最好将它们置于观察者(observe
或observeEvent
)中,这是一个热切评价。
然后,您可以通过input$'inputId'
我还会将绘图计算放在反应函数中,但这不是必需的。
shinyServer(function(input, output, session) {
data <- reactive({
req(input$file1)
inFile <- input$file1
df <- parseR(file=inFile$datapath) # Call my parser function
return(df)
})
observe({
df = data()
updateSelectInput(session, inputId = 'sender', label = 'Sender',
choices = levels(df$sender), selected = levels(df$sender))
})
# Main page
output$contents <- renderTable({
head(data(), 25)
})
# tabPanel 1
output$postCount <-renderPlot({
senderPosts(file=input$file1$datapath,newParamter = input$sender)
})
# tabPanel 2
output$wordCount <-renderPlot({
wordFreq(file=input$file1$datapath)
})
# tabPanel 3
output$chatCloud <-renderPlot({
chatCloud(file=input$file1$datapath)
})
})