2017-05-28 70 views
0

在闪亮,我想使用相同的数据集来生成和显示一个图形和一个表格,并以csv格式下载表格中的数据。R闪亮的一个代码来显示图形,表格和下载数据

我用的代码在服务器加载数据表像

DTGlobal <- readRDS("bigfile") 

我闪亮selectInput开始()建立类似下面的

selectInput(inputId = "ScenarioName", label = "xxx", choices = scenarioNames) 

一些用户输入目前我创造同样的情景 - 特定数据集renderTable()renderPlot()

scenarioName <- input$availabilityScenarioName 
DTlocal <- data.table::copy(DTGlobal[scenario %in% scenarioName) 
add some further manipulations of DTlocal here 

到目前为止,我已通过renderPlot()renderTable()中的代码实质上复制了图表和表格。我可以用downloadHandler()做同样的事情。但是我想知道是否有某种方法可以在服务器级别创建数据,然后我可以在下面的函数中访问这些数据。我想我可以在renderPlot()(这被称为第一个)中使用newDTGlobal <<- DTlocal,但我认为这会让所有人都可以使用它。如果他们运行相同的renderPlot()会消灭我的数据。

+0

你看过'reactiveValues()'...吗? – BigDataScientist

回答

0

搞清楚如何使用反应技术做了诀窍。这里是我现在正在做的一些代码片段。它从输入获取变量值并使用该信息生成数据表。

data.foodAvail <- reactive({ 
    countryName <- input$availabilityCountryName 
    scenarioName <- input$availabilityScenarioName 
    dt <- data.table::copy(dt.foodAvail.foodGroup) 
    spiderData <- spiderGraphData(countryName, scenarioName, dt, displayColumnName = "food_group_code") 
    }) 

下一段代码显示了我如何使用它(两个代码块都在服务器中)。相关位是data.foodAvail()。这是上面生成的特定于用户选择的输入值的值。

data.table副本是必需的,因为data.foodAvail()被spiderGraphData函数中涉及:=的数据表操作所改变。

output$availabilitySpiderGraphP1 <- renderggiraph({ 
    dt <- data.table::dt <- data.table::copy(data.foodAvail())) 
    scenarioName <- unique(dt$scenario) 
    dt[, region_code.IMPACT159 := NULL] 
    p <- spiderGraphOutput(dt, scenarioName) 
    ggiraph(code = print(p), zoom_max = 1, width = .5) 
    })