问题描述
我有一个管道工 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)
}
解决方法
应该是这样的
#* Return one value
#* @param my_group My Group
#* @get /values
function(my_group) {
df %>%
filter(group == my_group) %>%
select(var1)
}
然后您可以使用像 /values?my_group=a
这样的 URL。参数将通过字符串传递,因此您无需担心引号。如果你真的想拥有相同的变量名,你可以这样做
#* 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。