R闪亮的一个代码,用于显示图表,表格和下载数据

时间:2017-05-28 22:23:30

标签: r shiny

在闪亮的情况下,我希望使用相同的数据集来生成和显示图表和表格,并以csv格式下载表格中的数据。

我首先在服务器下加载一个像

这样的代码的数据表
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()做同样的事情。但我想知道是否有某种方法可以在服务器级别创建数据,然后我可以在下面的函数中访问。我想我可以在newDTGlobal <<- DTlocal中使用renderPlot()(首先称之为),但我认为这会让所有人都可以使用。如果他们运行相同的renderPlot(),那将会消灭我的数据。

1 个答案:

答案 0 :(得分: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)
  })