【问题标题】:Complex calculations for an interactive table in a R Shiny AppR Shiny App 中交互式表格的复杂计算
【发布时间】:2021-03-17 08:55:14
【问题描述】:

大多数闪亮的例子很容易重现。但由于我不是 R 专家,我很难为更复杂的想法增强它们。在下文中,我发明了一个代表我的问题的示例(这要复杂得多)。如果要复现,需要为每个代码sn-p添加块标签。

标题:“测试”

作者:“测试人”

日期:“2021 年 3 月 17 日”

输出:html_document

运行时:闪亮

knitr::opts_chunk$set(echo = TRUE)

我的示例数据框:

mydata <- data.frame(matrix(ncol=3, nrow=4))
colnames(mydata) <- c("player","time","routelength")
mydata$player <- c(1,2,3,4)
mydata$time <- c(20,30,10,20)
mydata$routelength <- c(200,350,410,220)

带有滑块的闪亮 UI:

ui <- fluidPage(
  sliderInput("multi", label = "Choose:",
              min = 1, max = 10, value = 1),
  tableOutput("data"),
)

闪亮的服务器和闪亮的应用程序:

server <- function(input, output) {
  sliderValues <- reactive({
    mydata$routelength*input$multi
    mydata
        })
  output$data <- renderTable({sliderValues()}, bordered=TRUE, digits=5)
}

shinyApp(ui, server)

当我这样做时,结果是一个静态表格,在使用滑块时没有任何变化。如果我将其更改为:

server <- function(input, output) {
  sliderValues <- reactive({
    mydata$routelength*input$multi
        })
  output$data <- renderTable({sliderValues()}, bordered=TRUE, digits=5)
}

那么只有一列在反应。

但我想要的是呈现整个表格,其中包含对滑块变化做出反应的列“routelength”。

在我真正的 R 文件中,问题要复杂得多:我有很多计算(数百行代码行)取决于我的滑块输入(我通过 &lt;&lt;rchunklable&gt;&gt; 调用它们),最后有一个结果我想可视化的表。我不知道如何包含所有这些计算......没有闪亮我的代码正在工作......但闪亮它不是。上面只包含一个计算的例子只是一个表示。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    您不需要将数据定义为reactive。试试这个:

    library(shiny)
    
    ui <- fluidPage(
      sliderInput("multi", label = "Choose:",
                  min = 1, max = 10, value = 1),
      tableOutput("data"),
    )
    
    server <- function(input, output) {
      output$data <- renderTable({
        mydata$routelength <- mydata$routelength*input$multi
        mydata
        }, bordered=TRUE, digits=5)
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 谢谢!我什么时候需要reactive
    • 这仍然适用于reactive。我通常只在必须在应用程序的不同部分使用数据时才使用reactive
    猜你喜欢
    • 2020-07-31
    • 2016-07-12
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多