【问题标题】:Dplyr Filter BugDplyr 过滤器错误
【发布时间】:2018-10-07 13:01:26
【问题描述】:

问题:

我在使用 dplyr 的过滤动词时遇到了一个奇怪的问题。我正在尝试按当前月份和当前年份过滤 data.frame。我为两者创建了一个反应函数:

current.month <- reactive({
   gsub("0", " ", format(Sys.Date(), "%m"))
current.year <- reactive({
format(Sys.Date(), "%Y")

当我尝试按反应式表达式进行过滤时,我的 data.frame 不返回任何结果。尽管我的 data.frame 中的日期列是字符类型,current.month()current.year() 反应值也是如此。

我有什么:

df[df$REPORT == input$dropdown.report, ] %>%
  filter(Month == current.month() & Year == current.year())

这不会返回任何输出。

但是,当我对输入进行硬编码时,我的表会毫无问题地返回。

df[df$REPORT == input$dropdown.report, ] %>%
   filter(Month == "4" & Year == "2018")

谁能引导我朝着正确的方向前进?您可以使用 iris 数据集重新创建这个确切的问题。我了解输出对于可重现的示例很重要,但我不能分享我公司的数据。

编辑:

出于计数目的,我的 data.frame 将日期变量分为 2 列:月、年。 Month 是一个没有前导 0 的字符 - 这就是为什么我需要使用上面的 gsub 函数。

【问题讨论】:

    标签: r filter shiny dplyr


    【解决方案1】:

    current.month() 中有一个不需要的 space 字符

    > gsub("0", " ", format(Sys.Date(), "%m"))
    [1] " 4"
    

    0 替换为""

    > gsub("0", "", format(Sys.Date(), "%m"))
    [1] "4"
    

    【讨论】:

      猜你喜欢
      • 2019-05-04
      • 2018-11-23
      • 2014-04-19
      • 2021-10-22
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多