【发布时间】:2015-10-07 13:33:41
【问题描述】:
我将 global 放在引号中,因为我不希望 ui.R 可以访问它,而只是在 server.R 中的每个函数中都可以访问它。这就是我的意思:
shinyServer(function(input, output, session) {
df <- NULL
in_data <- reactive({
inFile <- input$file1
if (is.null(inFile)) return(NULL)
else df <<- read.csv(inFile$datapath, as.is=TRUE)
return(NULL)
})
output$frame <- renderTable({
df
})
})
shinyUI(pageWithSidebar(
sidebarPanel(fileInput("file1", "Upload a file:",
accept = c('.csv','text/csv','text/comma-separated-values,text/plain'),
multiple = F),),
mainPanel(tableOutput("frame"))
))
我在 shinyServer 函数的开头定义了df,并尝试使用<<- 分配更改in_data() 中的全局值。但是df 永远不会改变它的NULL 分配(所以output$frame 中的输出仍然是NULL)。有什么方法可以在 shinyServer 的函数中更改df 的整体值?然后,我想在 server.R 中的所有函数中使用df 作为上传的数据框,这样我只需调用一次input$file。
我查看了this 的帖子,但是当我尝试类似的操作时,抛出了未找到 envir=.GlobalENV 的错误。总体目标是只调用一次input$file 并使用存储数据的变量,而不是重复调用in_data()。
非常感谢任何帮助!
【问题讨论】:
-
使用反应值Reactive values