r-内部tryCatch错误处理

r-内部tryCatch错误处理,r,shiny,R,Shiny,背景 我正在使用一个闪亮的应用程序来剪切和表格一些数据 数据集包含在下面的代码中,但头部是: > head(df_in) Report_Year Position Target 1 2014 CEO 29.27644 2 2014 CEO 29.27644 3 2014 CFO 17.56586 4 2014 CE 17.56586 5 2014 COO 17.

背景

我正在使用一个闪亮的应用程序来
剪切
表格
一些数据

数据集包含在下面的
代码中,但头部是:

> head(df_in)
  Report_Year Position   Target
1        2014      CEO 29.27644
2        2014      CEO 29.27644
3        2014      CFO 17.56586
4        2014       CE 17.56586
5        2014      COO 17.56586
6        2014      CEO 46.84231
我使用以下语句来
剪切
表格
数据

  df <- df_in %>%
    filter(Report_Year == input$v_year,
           Position == "CEO") %>%
    select(Target) %>%
    filter(!is.na(Target)) %>%
    mutate(bins = cut(Target, breaks=seq(0, (max(Target)+25), 25))) %>%
    select(bins) %>%
    table %>%
    as.data.frame

>
         . Freq
1   (0,25]    0
2  (25,50]    6
3  (50,75]    2
4 (75,100]    1
会话信息

> sessionInfo()
R version 3.2.0 (2015-04-16)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.2 LTS

locale:
 [1] LC_CTYPE=en_AU.UTF-8       LC_NUMERIC=C               LC_TIME=en_AU.UTF-8        LC_COLLATE=en_AU.UTF-8    
 [5] LC_MONETARY=en_AU.UTF-8    LC_MESSAGES=en_AU.UTF-8    LC_PAPER=en_AU.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] knitr_1.10.5   rmarkdown_0.7  stringr_1.0.0  extrafont_0.17 scales_0.2.5   tidyr_0.2.0    ggplot2_1.0.1  reshape2_1.4.1
 [9] dplyr_0.4.2    shiny_0.12.1 
错误消息


像这样的怎么样

server <- shinyServer(function(input, output) {

    df_in <- structure(...) # As before

    # Filter data according to input$v_year
    df <- reactive({
        df_in %>%
            filter(Report_Year == input$v_year, Position == "CEO") %>%
            select(Target) %>%
            filter(!is.na(Target))
    })

    # Prepare bins or return if df is empty
    bins <- reactive({
        if(nrow(df()) == 0) return()
        df() %>%
            mutate(bins = cut(Target, breaks=seq(0, (max(Target)+25), 25))) %>%
            select(bins) %>%
            table %>%
            as.data.frame
    })

    output$dt <- renderDataTable({
        bins()
    })        
})
server%
过滤器(!is.na(目标))
})
#准备垃圾箱或在df为空时返回
垃圾箱%
突变(料仓=切割(目标,断裂=序列(0,(最大(目标)+25),25))%>%
选择(料仓)%>%
表%>%
as.data.frame
})

输出$dt您的应用程序对我来说运行良好。当我选择2012年时,它不会崩溃。@LyzandeR哦。我正在通过RStudio运行它,你呢?我也在使用RStudio。@LyzandeR,这很奇怪。我还添加了我的会话信息,以防有任何问题。你会遇到什么错误?是的,这可能是我必须采取的方法。使用我的原始代码,当用户选择2012年时,你的应用程序会崩溃吗?一般来说,我认为检查输入是你无论如何都应该做的事情,不仅要包含可能的错误源,还要避免不必要的更改传播。感谢“已知错误”链接。我可能会将问题改为关于崩溃/已知错误。
server <- shinyServer(function(input, output) {

    df_in <- structure(...) # As before

    # Filter data according to input$v_year
    df <- reactive({
        df_in %>%
            filter(Report_Year == input$v_year, Position == "CEO") %>%
            select(Target) %>%
            filter(!is.na(Target))
    })

    # Prepare bins or return if df is empty
    bins <- reactive({
        if(nrow(df()) == 0) return()
        df() %>%
            mutate(bins = cut(Target, breaks=seq(0, (max(Target)+25), 25))) %>%
            select(bins) %>%
            table %>%
            as.data.frame
    })

    output$dt <- renderDataTable({
        bins()
    })        
})