【问题标题】:Using dplyr::filter within plumber在管道工中使用 dplyr::filter
【发布时间】:2021-05-19 18:52:45
【问题描述】:

我有一个管道工 API,并希望根据通过 dplyr 的过滤返回一个值。我通常会在过滤中使用引号 (group == "a"),但我不确定在这里做什么。

library(plumber)

#* @apiTitle Test filtering

df <- data.frame(group = c("a", "b", "c"), 
             var1 = c(3, 1, 2), 
             var2 = c( 2,  4, 8))

#* Return one value
#* @param "my_group" My Group
#* @post /my_output

function(group) {

  df %>%
    filter(group == my_group) %>%
    select(var1)
}

【问题讨论】:

    标签: r dplyr plumber


    【解决方案1】:

    应该是这样的

    #* Return one value
    #* @param my_group My Group
    #* @get /values
    function(my_group) {
      df %>%
        filter(group == my_group) %>%
        select(var1)
    }
    

    然后您可以使用/values?my_group=a 之类的网址。参数将通过字符串传递,因此您无需担心引号。如果你真的想拥有相同的变量名,你可以这样做

    #* Return one value
    #* @param group My Group
    #* @get /values
    function(group) {
      df %>%
        filter(.data$group == .env$group) %>%
        select(var1)
    }
    

    所以你有/values?group=a

    这些也适用于 POST 请求,只是更容易显示 GET URL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2018-09-01
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2016-03-17
      相关资源
      最近更新 更多