微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rshiny 没有在控制台中显示任何提示,那么如何调试 Rshiny 代码?

如何解决Rshiny 没有在控制台中显示任何提示,那么如何调试 Rshiny 代码?

我发现 rshiny 脚本非常难以调试。 尤其是最底层的是RunAPP。如果我得到错误。我没有看到来自控制台的任何提示。 请问你们是怎么调试rshiny的?

谢谢

解决方法

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

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

这是我如何在 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())) 会将反应式对象打印到控制台,这使您可以检查更改应用程序中的输入时反应式对象发生的情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。