首页 > 解决方案 > 如何在observeEvent函数中创建一个变量,当更改影响r闪亮的整个程序时?

问题描述

我在闪亮代码的服务器功能中有一个反应变量。此变量包含路径。它应该根据用户的输入而改变。我的代码是:- ui 代码:

map<-function(){   # A function to display pop up in summary tab for director where he/she can select the school name
    modalDialog(          
      fade = FALSE,
      footer = modalButton("Confirm"),
      title = 'Select the School',
      selectInput("school_name", "Choose the school",choices=c('XYZ','ABC'),selected = 'XYZ'),
      easyClose = FALSE,
      #footer = NULL,
      size = 'l')
  }

服务器端代码:

filepath <- reactiveVal("IS_XYZSchool.xlsx")
observeEvent(input$school_name,{
    
    pat<-dir(pattern = input$school_name)
    print(pat)
    filepath(pat)
    
  })

现在许多其他图形和数据都依赖于这个变量“文件路径”。当用户选择其他学校名称时,我希望所有这些都改变。我已经初始化了文件路径的第一个值。所以它适用于该值。但是当我更改 school_name 时,相应的文件路径也应该更改。但它会引发错误。这里 pat variable 我用来查找与该变量相关的文件。我在工作目录 IS_XYZSchool.xlsx 和 IS_ABCSchool.xlsx 中有两个文件。

标签: rshinyshinydashboardshinyappsshiny-reactivity

解决方案


也许创建一个像这样的反应对象会有所帮助。

filepath <- reactive({
  readxl::read_excel(sprintf('IS_%sSCHOOL.xlsx', input$school_name))
})

您可以使用filepath()来获取数据集。


推荐阅读