Shiny - 获取 R 文件,提取值并根据提取的值设置输入滑块

Shiny - Source a R file,extract values and set input sliders according to the extracted values

清新闪亮...
1. 我想使用 dashboardPage 创建一个 ui.R 并定义一个 selectInput 框(完成!)
2. 一旦用户选择 selectInput 中的字段之一,就会生成 Schools_Info.R 文件。 我试过 source("Schools_Info.R") 但我想要一些函数,它会 运行 Schools_Info.R 在背景中。
你是怎么做到的?
3. Schools_Info.R 包含我想用作的 minmax 的值 sliderInput.
我如何定义 sliderInput 以根据用户从 selectInput 框中选择的内容自动调整其限制(minmax)?

ui.R

library(shiny)
options(shiny.trace=TRUE)
library(shinydashboard)

locations <- c("Select your location",
           paste0("\tLocation1"),
           paste0("\tLocation2"),               
           paste0("\tLocation3")
           )


ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
    dashboardSidebar(
          selectInput("selectedLoc",choices = locations),
          source("Schools_Info.R"),
          sliderInput("slider", "Number of observations:", 1, min, max)),
    dashboardBody(
      fluidRow(

      box(
        title = "Controls",
      )
    )
  )
)

Schools_Info.R 中,确保已定义函数。 运行 该文件除了定义供以后使用的函数外什么都不做。来源 Schools_Info.Rserver.R 的开头,甚至在 shinyServer( 之前。然后使用用户从 selectInput 小部件中选择的任何内容来响应地使用函数 运行。您可以使用单独的函数来获取最大值和最小值,或者您可以使用 this method to return two values from a single function at the same time. Then use updateSliderInput 设置滑块上的最小值和最大值。

Schools_Info.r

GetMax = function(locality){15}
GetMin = function(locality){1}

server.R

max = reactive(GetMax(selectedLoc))
min = reactive(GetMax(selectedLoc))
observe({
  updateSliderInput(session, "slider", "Number of observations:", c(max, min))
)}

显然,我不知道 Schools_Info.R 是做什么的,所以我输入的函数非常简单。另外,我不太清楚 observe 的作用,所以可能没有必要。