2014-03-12 8 views
3

R에서 여러 값 매개 변수를 사용하여 URL 쿼리 문자열을 구문 분석하고 작성하는 간단한 방법이 있습니까?여러 값 매개 변수가있는 URL 쿼리 문자열을 구문 분석하고 작성하는 방법 R

나는

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" 

내가 다시 a를 얻을 수 parse() + eval()를 사용할 수있는 이해

를 재 처리하지만 자유롭게 URL로 덤프 할 수 있습니다 평가 코드에 매우 안전하지 않은 보인다 될 수있다. 제안 사항이 있으십니까?

+0

당신 수 '붕괴'당신이 그것을 기대에 parse_url''의 결과. 'x <- list (a = "1", a = "2", b = "val"); lapply (split (x, as.factor (names (x))), function (y) do.call ("c", y)) '. –

답변

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)))