如何从R中的url提取选择和筛选查询
这是我要在select query和filter query中从中提取字符串的url: ?$select=ID,CLASS,FIRST\u NAME,LAST\u NAME&$filter=FirstName eq'angle'或FirstName eq'Clyde' 我想提取两个字符串中的select和filter查询值。我试过这些:如何从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 <
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'"
foohttr
具有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"