Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R updateSelectInput导致服务器中的所有反应性代码重新运行_R_Shiny - Fatal编程技术网

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
                        })
})