如何从R中的url提取选择和筛选查询

如何从R中的url提取选择和筛选查询,r,R,这是我要在select query和filter query中从中提取字符串的url: ?$select=ID,CLASS,FIRST\u NAME,LAST\u NAME&$filter=FirstName eq'angle'或FirstName eq'Clyde' 我想提取两个字符串中的select和filter查询值。我试过这些: res <- str_match(a, "STR1 (.*?) STR2") res解决方案,通过$拆分url,然后提取选择和过滤部分 foo <

这是我要在select query和filter query中从中提取字符串的url:

?$select=ID,CLASS,FIRST\u NAME,LAST\u NAME&$filter=FirstName eq'angle'或FirstName eq'Clyde'

我想提取两个字符串中的select和filter查询值。我试过这些:

res <- str_match(a, "STR1 (.*?) STR2")

res解决方案,通过
$
拆分url,然后提取
选择
过滤
部分

foo <- "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?$select=ID,CLASS,FIRST_NAME,LAST_NAME&$filter=FirstName eq 'Angel' or FirstName eq 'Clyde'"
bar <- unlist(strsplit(foo, "\\$"))
bar
[1] "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?"
[2] "select=ID,CLASS,FIRST_NAME,LAST_NAME&"                                              
[3] "filter=FirstName eq 'Angel' or FirstName eq 'Clyde'" 

resultSelect <- unlist(strsplit(gsub("select=|\\&$", "", grep("^select=", bar, value = TRUE)), ","))
resultFilter <- unlist(strsplit(gsub("filter=", "", grep("^filter=", bar, value = TRUE)), ","))

resultSelect
[1] "ID"         "CLASS"      "FIRST_NAME" "LAST_NAME" 

resultFilter
[1] "FirstName eq 'Angel' or FirstName eq 'Clyde'"

foo
httr
具有
parse\u url
功能:

URL <- "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?$select=ID,CLASS,FIRST_NAME,LAST_NAME&$filter=FirstName eq 'Angel' or FirstName eq 'Clyde'"
queries <- c("select", "filter")

extractQ <- function(x, url = URL) {
    library(magrittr)
    strsplit(url, "\\$") %>%
        unlist() %>%
        grep(paste0("^", x, "="), ., value = TRUE) %>%
        gsub(paste0(x, "=|\\&$"), "", .) %>%
        strsplit(",") %>%
        unlist()
}

sapply(queries, extractQ)

$select
[1] "ID"         "CLASS"      "FIRST_NAME" "LAST_NAME" 

$filter
[1] "FirstName eq 'Angel' or FirstName eq 'Clyde'"
library(httr)

myurl <- "http://services.odata.org/V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People?$select=ID,CLASS,FIRST_NAME,LAST_NAME&$filter=FirstName eq 'Angel' or FirstName eq 'Clyde'"

parse_url(myurl)
$scheme
[1] "http"

$hostname
[1] "services.odata.org"

$port
NULL

$path
[1] "V4/(S(cscsmmmc110sj01dvwgyolkm))/TripPinServiceRW/People"

$query
$query$`$select`
[1] "ID,CLASS,FIRST_NAME,LAST_NAME"

$query$`$filter`
[1] "FirstName eq 'Angel' or FirstName eq 'Clyde'"


$params
NULL

$fragment
NULL

$username
NULL

$password
NULL

attr(,"class")
[1] "url"