动态 Jmeter 板的R markdown中的str_detect()

fcg9iug3  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在使用R Markdown创建一个 Jmeter 板,因为它比使用R-Shiny更容易。我有一段代码在升级tidyverse后停止工作。Tidyverse更改了其str_detect的行为()的字符串操作,因为它现在抛出一个错误,如果一个空字符串被检测到。所以,我需要一些建议。以下是代码和我需要做的(重点放在str_detect()部分)。

df %>%
  select(YEAR,
         Q...) %>%
  filter(
    !is.na(HAILWT) &
    CODMSIZE >= input$codmeshTBL[1] & CODMSIZE <= input$codmeshTBL[2] &
    YEAR >= 
... &
    str_detect(CATDISP, if_else(input$dispositionTBL == "All", "", input$dispositionTBL)) 
... &
  ) %>%
...

输入$dispositionTBL是一个下拉控件,选项为“全部”、“丢弃”、“保留”和“未知”。“丢弃”、“保留”和“未知”是 Dataframe 中CATDISP列的行。“全部”是我添加到控件中的。当用户选择“全部”时,不应对列“CATDISP”进行筛选。当用户选择其他任何内容时,过滤应该发生在所选的选项上。这在更新之前都工作正常,但是现在抛出错误“str_detect():!pattern不能是空字符串("")"。这是来自" All”选择的空字符串的b/c。所以,我尝试添加NULL、True和c(“Discarded”、“Kept”、“Unknown”),但没有效果。有人有关于如何在用户为特定列选择“All”时禁用过滤的策略/建议吗?非常感谢。

jmo0nnb3

jmo0nnb31#

如果你说明你想要的输出是什么样子,那就容易多了。
我的理解是,如果用户输入是"All",则需要返回TRUE,而对于其他任何情况,则需要返回str_detect(CATDSIP, input$dispositionTBL)。在这种情况下,只需将str_detect调用替换为:

if_else(
  input$dispositionTBL == "All",
  TRUE, # this is basically what `grepl("",input$dispositionTBL) would return
  stringr::str_detect(CATDISP, input$dispositionTBL)
  )

相关问题