在管道工中使用 dplyr::filter

Using dplyr::filter within plumber

我有一个水管工 API 并且想要 return 一个基于通过 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)
}

它应该看起来像

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

然后您可以使用 URL,例如 /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.

更容易