R updateSelectInput导致服务器中的所有反应性代码重新运行
我有一个基本的服务器结构,看起来像这样R updateSelectInput导致服务器中的所有反应性代码重新运行,r,shiny,R,Shiny,我有一个基本的服务器结构,看起来像这样 server <- shinyServer(function(input, output, session) { library(readr) data <- reactive({req(input$file1) inFile <- input$file1 df <- as.data.frame(read_csv(inFile$datapath)) # read in data updateSelectInput("do stu
server <- shinyServer(function(input, output, session) {
library(readr)
data <- reactive({req(input$file1)
inFile <- input$file1
df <- as.data.frame(read_csv(inFile$datapath)) # read in data
updateSelectInput("do stuff") #change what happens in the plot based on selection
return(df)
})
output$priceCurve <- renderPlot({
"do plot stuff" #plot stuff based on upDateSelectInput above
})
})
发生的事情是我要求用户提供csv。他们上传了一个。然后根据选择,他们让我对csv生成的数据帧进行子集划分,并绘制它
问题在于,每次用户选择下拉选项时,应用程序都会重新读取csv。它不应该这样做超过一次。我希望它只存储在内存中,并根据选择对数据帧执行操作。我不希望每次选择时都读取数据 如果没有一个可重复的例子,很难看出这是否有效,但试试这个 将您的读取文件语句包装在隔离文件中。我认为这应该使这些语句只依赖于输入$file1,但数据仍然会对更新selectinputdo内容作出反应
这是一个很好的尝试,但它会导致renderPlot和updateSelectInput不产生任何输出。我将尝试制作一个完全可复制的示例来演示。
server <- shinyServer(function(input, output, session) {
library(readr)
data <- reactive({
isolate(req(input$file1)
inFile <- input$file1
df <- as.data.frame(read_csv(inFile$datapath))
) # read in data
updateSelectInput("do stuff") #change what happens in the plot based on selection
return(df)
})
output$priceCurve <- renderPlot({
"do plot stuff" #plot stuff based on upDateSelectInput above
})
})