r - Shiny 中的 tryCatch 错误处理

2023-11-26

背景

我正在使用一个闪亮的应用程序cut and table一些数据。

数据集包含在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.56586
6        2014      CEO 46.84231

我正在使用以下语句cut and table数据

  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

数据中有no的条目Report_Year == 2012,所以当用户选择2012我希望它要么显示“无数据”之类的消息,要么此刻我对空数据框感到满意。

我尝试过tryCatch()声明,但我显然没有正确执行,因为当用户选择时应用程序崩溃2012.

Question

我应该怎样写tryCatch?

闪亮的应用程序

library(shiny)
library(dplyr)

ui <- shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("v_year", label = "select year", choices = c(2012, 2014), selected = 2014)
    ),
    mainPanel(
      dataTableOutput("dt")
    )
  )
))

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


df <- reactive({

  ## data
  df_in <- structure(list(Report_Year = c(2014L, 2014L, 2014L, 2014L, 2014L, 
  2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
  2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
  2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L), Position = c("CEO", 
  "CEO", "CFO", "CE", "COO", "CEO", "CFO", "BUE", "CE", "CFO", 
  "CEO", "COO", "CE", "BUE", "COO", "CFO", "CE", "GC", "CEO", "CEO", 
  "CE", "BUE", "CEO", "CFO", "CE", "GC", "CFO", "CEO", "CEO", "CE"
  ), Target = c(29.2764408921928, 29.2764408921928, 17.5658645353157, 
  17.5658645353157, 17.5658645353157, 46.8423054275084, 38.6449019776945, 
  38.6449019776945, 38.6449019776945, 35.1317290706313, 35.1317290706313, 
  46.8423054275084, 35.1317290706313, 35.1317290706313, 43.9146613382892, 
  43.9146613382892, 35.1317290706313, 35.1317290706313, 29.2764408921928, 
  87.8293226765783, 11.7105763568771, 11.7105763568771, 29.2764408921928, 
  17.5658645353157, 35.1317290706313, 40.9870172490699, 40.9870172490699, 
  73.1911022304819, 70.2634581412627, 46.8423054275084)), class = "data.frame", .Names = c("Report_Year", 
  "Position", "Target"), row.names = c(NA, -30L))

    tryCatch({
      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
    }, 
    warning=function(w) { 
      print("Warning")
      df <- data.frame()
      return(NA)
    }, 
    error=function(e) {
      print("Error")
      df <- data.frame()
      return(NULL)
    }
    )
})

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

})

shinyApp(ui = ui, server = server)

会议信息

> 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 

错误信息

appRErrorMessage


像这样的事情怎么样?

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()
    })        
})

因为我们检查是否df()只要您输入正确就为空seq永远不会收到空参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

r - Shiny 中的 tryCatch 错误处理 的相关文章

  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • 使用点阵个性化 R 上显示的 X 轴值

    我收集了大量包含日期 客户端及其 NFS 使用情况的数据 我正在使用lattice R包进行绘图 正如对超级用户的建议 https superuser com questions 523195 plot custom log data on
  • 平滑连续 2D 点

    UPDATE 感谢 user20650和 李哲源Zheyuan Li 这是我想出的解决方案 Example data set df 3600 observations points Create a vector of the cumula
  • 计算 R 行中的非零条目数

    我有以下类型的数据 mode1 mode2 mode3 1 8 1 0 2 0 0 0 3 6 5 4 4 1 2 3 5 1 1 1 数据使用dput structure list mode1 c 8L 0L 6L 1L 1L mode2
  • rvest 函数 html_nodes 返回 {xml_nodeset (0)}

    我正在尝试抓取以下网站的数据框 http stats nba com game 0041700404 playbyplay http stats nba com game 0041700404 playbyplay 我想创建一个表格 其中包
  • HTTR GET 新错误:SSL 证书问题:证书已过期

    我已经运行这段代码几个月了 没有出现任何问题 今天我突然开始在我的两台 AWS 服务器上收到以下错误消息 错误 curl curl fetch memory url handle handle SSL证书问题 证书已过期 当尝试运行以下代码
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • 我如何查看 quantmod 包中所有可用的数据系列?

    如何显示可用的所有报价 数据系列的列表 例如使用雅虎的 getSymbols 我不知道有什么办法 TTR包有一个功能 stockSymbols 下载 NYSE AMEX 和 NASDAQ 的所有当前代码 它试图将它们采用雅虎可接受的格式 但
  • R:改变堆积条形图的颜色

    library ggplot2 df2 lt data frame supp rep c VC OJ each 3 dose rep c D0 5 D1 D2 2 len c 6 8 15 33 4 2 10 29 5 head df2 g
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 如何根据多个条件创建列?

    我有一个数据框 我想根据多个条件创建一个列 v1 v2 v3 v4 v5 4 1 2 4 5 5 5 2 4 5 6 21 9 20 30 50 6 4 5 7 9 10 3 6 5 9 基本上 使用以下可能的值创建 v6 Cat dog
  • devtools::test() 有效,但 devtools::check() 无效。为什么?

    我正在测试this https github com beanumber etlR 包 以下三件事就可以正常工作 devtools test devtools test file tests testthat R Travis CI 与 R
  • 计算字符串向量中连续数字的函数

    我想创建一个函数 它接受至少 1 个元素的字符串对象并包含数字 2 到 5 并确定是否存在至少 N 长度的连续数字 其中 N 是实际数字值 如果是 则返回字符串 true 否则返回字符串 false 例如 Input 555123 Outp
  • 识别包含字符串的行的最快方法[重复]

    这个问题在这里已经有答案了 我有一个字符串数据框 尺寸为 30 列 x 500 万行 我想识别包含任何预定义字符串列表的行 有没有比下面我的 apply any 方法更快的方法 这是一个可重现的示例 请注意 此示例中的字符串是随机数 但在我
  • 如何在 foreach( ... , .packages="pkg") %dopar% 中指定 R 包的位置

    我的 包 安装在其他地方 我如何告诉 foreach 在哪里可以找到该包 foreach i 1 2 packages pkg dopar 这给我错误消息 worker initialization failed there is no p
  • 上传到 Shiny 服务器后在 R 中解压文件

    我正在尝试在我们的本地服务器上使用 Shiny 来构建一个应用程序 允许用户上传包含 ESRI shapefile 和关联文件的 zip 文件 Shiny 服务器的 fileInput 可以获取数据 并且当它这样做时 它会将其存储在临时目录
  • 将动物园转换为数据框

    我转换了一个zoo time series到数据框中R日期成为数据框的索引 有没有办法将日期表示为数据框中的普通列 monthly df lt data frame monthly zoo head monthly zoo head mon
  • ggplot geom_bar - 条形太宽

    对于这个非信息性的标题 我感到很抱歉 gt y read csv textConnection scan sep n what raw org art type length 191 gk Finish short 4 147 ik Att
  • 导入 .sav 时出现警告/错误

    我工作中有两个版本的 SPSS SPSS 11 在 Windows XP 上运行 SPSS 20 在 Linux 上运行 SPSS 的两个副本都工作正常 使用任一版本的 SPSS 创建的文件在其他版本的 SPSS 上打开时不会出现任何问题
  • 如何绘制 Voronoi 曲面细分的多边形而不是线段?

    我找到了一种使用 ggplot2 绘制 Voronoi 曲面细分的分段的方法 library deldir library ggplot2 library ggthemes set seed 123 df lt data frame lat

随机推荐

  • StringEscapeUtils.escapeXml 正在转换不应转换的 utf8 字符

    escapeXml函数正在转换 to amp 1133 amp 1134 我想不应该 我读到的是它仅支持五个基本 XML 实体 gt lt quot amp apos 有没有一个函数只转换这五个基本的xml实体 public String
  • 使用 MSVC 强制导出符号

    我有一个应用程序和几个 DLL 文件中的插件 这些插件使用的符号来自 通过导出库应用程序 该应用程序链接到几个静态库 这是大多数符号的来源 只要应用程序使用符号 这就可以正常工作 如果此处未使用该符号 则在编译 DLL 时会出现链接器错误
  • float指针和int指针地址有什么区别?

    我尝试运行这段代码 int p float q q 6 6 p q 虽然这将是一个警告 但我认为 q and p大小相同 所以p可以有一个地址q 但是当我打印时 q and p我得到不同的输出 这是我的输出 p 6 600000 q 0 0
  • FireMonkey 控件的动画效果不流畅

    背景 我使用一些 FireMonkey 控件创建了一个 GUI 有些控件是动画的 它们的外观会自动更新 某些控件仅响应用户交互 滑块等 而更新 Problem 与用户控件的交互会阻止对动画控件的更新 从而导致动画不连续 有问题的动画视频 上
  • 找到可用(未加载)的 PHP 扩展

    我需要一种方法来查找所有可用的 PHP 扩展是否已加载 我在看如何查看 PHP 加载的扩展 但它只解释了如何找到加载的扩展 我也想要一种找到卸载的扩展的方法 从 php ini 知道了 extension dir 我做了一个ls exten
  • 如何使用jquery旋转插件旋转图像?

    如何使用旋转图像jQuery 旋转 plugin 我已经尝试过以下方法 但似乎不起作用
  • 使用Python请求“桥接”文件而不加载到内存中?

    我想使用Python 请求库从 URL 获取文件并将其用作发布请求中的多部分编码文件 问题是该文件可能非常大 50MB 2GB 我不想将其加载到内存中 语境here 以下文档中的示例 多部分 流下来 and 流起来 我做了这样的东西 wit
  • JavaScript 函数 parseInt() 无法正确解析以 0 开头的数字

    我在正整数之前有一些零 我想删除零 这样只保留正整数 就像 001 只会是 1 我认为最简单的方法是使用 parseInt 001 但我发现它不适用于数字 8 和 9 示例 parseInt 008 将产生 0 而不是 8 以下是完整的 h
  • Swift 动态类型检查结构?

    我对 Swift 中的动态类型检查感到困惑 具体来说 我有一个奇怪的情况 本质上我想编写 或查找 一个函数 func isInstanceOf obj Any type Any Type gt Bool 在 Objective C 中 这是
  • Python 中的交互式 BSpline 拟合

    使用以下函数 可以在输入点 P 上拟合三次样条 def plotCurve P pts np vstack P P 0 x y pts T i np arange len pts interp i np linspace 0 i max 1
  • 有没有办法检查 jekyll 站点是否在本地提供服务?

    我想将以下行添加到我的head html仅在跑步时jekyll serve本地 如果可能的话 我正在考虑使用一些简单的液体检查 当你做一个jekyll serve本地默认 jekyll environment 变量设置为 developme
  • Vue JS 数据绑定不适用于 img src

    我正在使用 vue 2 和 vue cli 3 我正在尝试绑定src标签到数据中的变量 具体来说 我正在执行以下操作 img class img time matters export default name home component
  • 错误:将 nvarchar 数据类型转换为smalldatetime 数据类型导致值超出范围

    嘿我正在尝试执行以下插入查询 SqlDataSource userQuizDataSource new SqlDataSource userQuizDataSource ConnectionString Data Source localh
  • 在 Haskell 中,如果绑定“隐藏现有绑定”,这意味着什么?

    当我编译时 我收到来自 GHC 的警告 警告 pats 的此绑定隐藏了 match ignore ancs 定义中的现有绑定 这是函数 match ignore ancs TextPat c Text t c t match ignore
  • 访问另一个 Web 应用程序的会话

    是否可以在 J2EE 应用程序 EAR 中配置两个单独的 Web 应用程序 WAR 来访问共享会话上下文 更多信息 我最终从 EAR 创建了一个共享类 它将所需的信息存储在静态成员中 这确实达到了目的 即使这看起来像是一个肮脏的黑客行为 不
  • Node.js 的 http.request 的性能如何?它可以处理多少并发请求?

    我的 node js 服务器正在使用最新的 0 4 8 http request 调用来调用另一台服务器 我使用 jMeter 来运行负载测试 每秒 50 100 个并发线程 循环 1000 次 我观察到当脚本继续运行时速度会变慢 我监控网
  • 退出应用程序时保存游戏

    我正在用 Unity C 制作一个游戏 我为游戏编写了保存本地和保存云的代码 我按下退出按钮 保存游戏然后退出 但我在这里保存的游戏有问题 当某人或玩家按下移动设备上的主页按钮时 游戏将退出并在后台运行 如果玩家重新启动设备 后台运行的游戏
  • R查找数据框中某些列与另一个列匹配的行[重复]

    这个问题在这里已经有答案了 我有一个 R 问题 我什至不知道如何用一句话来表达 但还找不到答案 我有两个数据框 我想 相交 并找到列值匹配的所有行two列 我尝试用 连接两个 intersect 和 which 语句 但都没有给我我想要的东
  • 在 multiprocessing.Pool 中调用 requests.get 时挂起

    我有以下代码 def process url url print 111 r requests get url print 222 lt never even gets here return urls to download list o
  • r - Shiny 中的 tryCatch 错误处理

    背景 我正在使用一个闪亮的应用程序cut and table一些数据 数据集包含在shiny代码如下 但头部是 gt head df in Report Year Position Target 1 2014 CEO 29 27644 2