【问题标题】:dplyr filter in shiny有光泽的 dplyr 过滤器
【发布时间】:2016-05-12 09:57:55
【问题描述】:

我有一个带有过滤条件的闪亮应用程序,例如,如果 case1 为真,我想保留特定 verctor 的所有值,如果不是,我使用输入 shiny 进行过滤。 我已经用基本的 R 完成了它,它可以工作,但现在需要使用 dplyr 优化我的应用程序。 谢谢

filter(
    ifelse(input$case1 == TRUE, 
           perimetre_commercial_estime %in% perimetres,
           perimetre_commercial_estime %in% input$perimetre
    )
 ) 

编辑 1:

R 中的等价物是:

ifelse(input$case1 == TRUE,
       my.data <- my.data[my.data$perimetre_commercial_estime %in% perimetres, ],
       my.data <- my.data[my.data$perimetre_commercial_estime %in% input$perimetre, ]                   
)

编辑 2:

在 jeff 回答之后,我只是用 if (condition) else 替换了 ifelse 语句,它工作得很好......有什么建议吗?

  filter(if(input$case1 == TRUE){perimetre_commercial_estime %in% perimetres}
         else {perimetre_commercial_estime %in% input$perimetre}

【问题讨论】:

    标签: r shiny dplyr


    【解决方案1】:

    卓悦山地车,

    听起来您将条件放在过滤器中,而它应该是第一个。所以:

    if (condition)
      var <- filter(perimetre_commercial_estime %in% perimetres)
    else
      var <- filter(perimetre_commercial_estime %in% input$perimetre)
    

    您的帖子建议 ifesle 应该在 filter() 函数之外; dplyr 允许组合/排除逻辑参数,如 && 和 ||但在相同的上下文中。

    希望我理解了这个问题,我自己在这里寻找一些意想不到的闪亮/dplyr 行为......

    【讨论】:

    • Bonjour Jeff :) 感谢您的回答,我将 ifelse 语句替换为 dplyr 过滤器中的 if else 语句,它似乎工作......奇怪!
    【解决方案2】:

    您应该提供了一个可重现的示例。据我了解,这个简单的例子可能会对你有所帮助。

    library(dplyr)
    x <- data.frame(a = sample(c("a","b"),10,replace=T),b = rnorm(10))
    > x
       a          b
    1  b -0.3862283
    2  a  0.7916584
    3  a -0.8751162
    4  a -0.8164377
    5  b -0.2174477
    6  a -0.1998766
    7  a  0.3356798
    8  a  0.1569653
    9  b  0.8326479
    10 b -0.7936936
    
     x %>% filter(a == "a")
    
      a          b
    1 a  0.7916584
    2 a -0.8751162
    3 a -0.8164377
    4 a -0.1998766
    5 a  0.3356798
    6 a  0.1569653
    

    【讨论】:

    • 谢谢你,但这不是我要找的。我想要的是使用闪亮的条件进行过滤,这就是我使用 ifelse 语句的原因。例如,对于变量“perimetre_commercial-estime”,我希望闪亮显示我在 input$perimetre 中选择的模态,但是当我检查“case1”时,我想将所有模态保留在“perimetres”向量中。
    猜你喜欢
    • 2014-02-10
    • 2014-08-21
    • 2011-08-17
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多