有没有办法在Shiny中结合反应式表达式?

时间:2016-08-16 19:48:10

标签: r shiny

在使用R / Shiny作为GIS的情况下,我对反应性非常新。

如果两个不同的反应式表达式中的任何一个执行,是否可能有一个反应变量?

用户基本上可以手动创建数据框或上传数据框。问题是,我将所有反应式表达式绑定到手动创建端(customDF()),并且无法集成上载端。

换句话说,当我按下两个按钮(创建数据框和上传)时,我希望程序能够意识到数据框已经改变。我试过让任何一个表达式重新分配一个静态变量,但它打破了反应性。

这是按钮按下方法的样子:

Application.Exit();

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

导入文件并选择文件? 改编自:https://gist.github.com/jcheng5/9496297

<强> server.r

#list of files
files <<- ("create data frame" = "create",
          "upload data frame" = "upload")

#cash results
getData <- memoise(function(file){
    if (!(file %in% files))
       stop("Unknown File")

     data<- as.data.frame(sprintf("path///to///file///location//%s.csv", file))

    data
    })

#reactive function
shinyServer(function(input, output, session) {
  # Define a reactive expression for the document
  reactiveData <- reactive({
    # Change when the "update" button is pressed...
    input$update
    # ...but not for anything else
    isolate({
      withProgress(session, {
        setProgress(message = "Processing data...")
        getData(input$selection)
      })
    })
  })


#output as table or whatever
output$table <- DT::renderDataTable(DT::datatable(
                     data <- as.data.frame(reactiveData())
                )

<强> ur.r

shinyUI(fluidPage(
  progressInit(),

  # Application title
  headerPanel("data selection"),

  # Sidebar with a slider and selection inputs
  sidebarPanel(width = 5,
    selectInput("selection", "Choose a dataset:", 
                choices = files),
    actionButton("update", "Change"),

  ),

  # Show data
  mainPanel(
    DT::dataTableOutput("table")
  )
))