3

是否有一种直接的方法可以在 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"

这个最新的 URL 可以重新处理

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

 $b
 [1] "val"

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

4

1 回答 1

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)))
于 2014-03-12T09:08:57.800 回答