如何在R Plumber API中传入字符串向量?
解决Plumber API接收逗号分隔字符串作为列向量的问题
问题核心:你传入的cols是单个字符串(如"V1,V3"),而R的数据框索引需要的是字符向量,直接用dat[, cols]会尝试寻找名为"V1,V3"的列,自然报错。
解决方案:将逗号分隔字符串转换为字符向量
在Plumber的处理函数中,对传入的cols参数做两步处理:
- 用
strsplit()按逗号分割字符串 - 用
trimws()去除每个元素的多余空格(兼容带空格的输入,如"V1, V3") - 转换为字符向量
修改后的完整代码
library(plumber) library(dplyr) #* Do means #* @param cols The columns I want (comma-separated, e.g. V1,V3 or V1, V3) #* @get /mean function(cols) { dat <- data.frame(V1 = rnorm(10), V2 = rnorm(10), V3 = rnorm(10)) # 处理cols参数:分割+去空格+转向量 cols_vec <- trimws(unlist(strsplit(cols, ","))) tmp <- dat[, cols_vec] colMeans(tmp) } pr("c:/path2file/plumber.R") %>% pr_run(port=8000)
测试说明
在Swagger界面的cols参数框中输入V1,V3或V1, V3,发送请求后就能得到对应列的均值,和你纯R中的实现效果一致。
内容的提问来源于stack exchange,提问作者dhc
相关产品推荐
相关产品推荐

