在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代码来说,它看起来相当不安全。
有什么建议?
答案 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)))