【问题标题】:Rshiny did not show any hint in the console so how to debug the Rshiny code?Rshiny 没有在控制台显示任何提示,那么如何调试 Rshiny 代码呢?
【发布时间】:2021-01-25 22:21:29
【问题描述】:

我发现 rshiny 脚本非常难以调试。 特别是,rshiny 底部是 RunAPP。如果我得到错误。我没有从控制台看到任何提示。 请问大家是怎么调试rshiny的?

谢谢

【问题讨论】:

  • print("还没有断线,X线")

标签: r shiny shinydashboard shinyapps


【解决方案1】:

最重要的是:始终牢记您需要测试和调试代码。不要仅仅为了满足需求而编写代码。将测试和调试视为需求本身。这种心态是遵循这些规则的良好起点:

  1. R-Studio 提供了一些对调试有用的功能:逐步执行代码、跟踪函数调用、检查变量,以及在应用程序打开时在控制台上运行您自己的代码的机会持有。
  2. 如果断点不起作用(有时它们根本不起作用),请将 browser() 添加到您的代码中,这会创建一个“强制”断点。
  3. 有时print() 有助于将更多信息输出到控制台。
  4. 将业务逻辑与 UI 明确分离。使用单元测试(testthat)。如果出现错误,请编写一些示例代码来测试闪亮应用之外的业务逻辑。

【讨论】:

    【解决方案2】:

    这是我如何在 Shiny 中调试的示例:

    library(shiny)
    
    ui <- fluidPage(
    
        titlePanel("Old Faithful Geyser Data"),
    
        sidebarLayout(
            sidebarPanel(
                sliderInput("bins",
                            "Number of bins:",
                            min = 1,
                            max = 50,
                            value = 30)
            ),
            mainPanel(
               plotOutput("distPlot")
            )
        )
    )
    
    server <- function(input, output) {
        
        x <- reactive({
            faithful[, 2]
        })
        
        bins <- reactive({
            seq(min(x()), max(x()), length.out = input$bins + 1)
        })
        
        observe(print(bins())) # THIS LINE WILL PRINT OUTPUT TO CONSOLE
    
        output$distPlot <- renderPlot({
            hist(x(), breaks = bins(), col = 'darkgray', border = 'white')
        })
    }
    
    shinyApp(ui = ui, server = server)
    

    observe(print(reactive_object_name())) 会将反应对象打印到控制台,这使您可以检查在应用程序中更改输入时反应对象发生的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 2017-07-29
      • 2022-06-14
      • 1970-01-01
      • 2012-03-23
      • 2011-04-12
      • 1970-01-01
      相关资源
      最近更新 更多