如何在R中解析和构建具有多个值参数的URL查询字符串

时间:2014-03-12 08:43:36

标签: r url query-string httr

在R?

中是否有一种简单的方法来解析和构建具有多个值参数的URL查询字符串

我希望像

这样的东西
myqueryString <- parse_url("http://www.mysite.com/?a=1&a=2&b=val")$query
myqueryString
  $a
  [1] 1 2
  $b
  [1] "val"

urlElements <- list(scheme="http",path="www.mysite.com/",query=list(a=c(1,2),b="val"))
setattr(urlElements,"class","url")
build_url(urlElements)
  [1] "http://www.mysite.com/?a=1&a=2&b=val"

然而httr给出了

parse_url("http://www.mysite.com/?a=1&a=2&b=val")$query
 $a
 [1] "1"

 $a
 [1] "2"

 $b
 [1] "val"

builtURL <- build_url(urlElements)
builtURL
   [1] "http:///www.mysite.com/?a=c%281%2C%202%29&b=val"

可以重新处理此最新网址

parse_url(builtURL)$query
 $a
 [1] "c(1, 2)"

 $b
 [1] "val"

我知道我可以使用parse() + eval()来获取a,但对于可以自由转储到URL的eval代码来说,它看起来相当不安全。 有什么建议?

1 个答案:

答案 0 :(得分:1)

看看这些是否可以在这两种参数列表格式之间进行转换:

mergeUrlArgs <- function(x) sapply(unique(names(x)), function(z) unlist(x[names(x) == z], use.names=FALSE), simplify=FALSE)

expandUrlArgs <- function(x) structure(do.call(c, lapply(x, function(z) as.list(z))), names=rep(names(x), sapply(x, length)))