Согласен, он не работает, как указано в документации.Если вы посмотрите на исходный код функции, похоже, что есть ошибка.
function (string, restrict = c("functions", "vignettes", "views"),
format = c("normal", "short"), sortby = c("score", "date:late",
"date:early", "subject", "subject:descending", "from",
"from:descending", "size", "size:descending"), matchesPerPage = 20)
{
string <- paste0("http://search.r-project.org/cgi-bin/namazu.cgi?query=",
URLencode(gsub(" ", "+", string), reserved = TRUE))
mpp <- paste0("max=", matchesPerPage)
format <- paste0("result=", match.arg(format))
restrictVALS <- c("functions", "vignettes", "views")
restr <- match.arg(restrict, choices = restrictVALS, several.ok = TRUE)
restr <- paste(paste0("idxname=", restr), collapse = "&")
sortby <- match.arg(sortby)
sortby <- paste0("sort=", switch(sortby, score = , `date:late` = ,
`date:early` = sortby, subject = "field:subject:ascending",
`subject:descending` = "field:subject:descending", from = "field:from:ascending",
`from:descending` = "field:from:descending", size = "field:size:ascending",
`size:descending` = "field:size:descending"))
qstring <- paste(string, mpp, format, sortby, restr, sep = "&")
browseURL(qstring)
cat(gettextf("A search query has been submitted to %s",
"http://search.r-project.org"), "\n", sep = "")
cat(gettext("The results page should open in your browser shortly\n"))
invisible(qstring)
}
Похоже, что есть проблема с URLencode(gsub(" ", "+", string), reserved = TRUE)
.Это добавляет +
, но затем экранирует знак в запросе, который нам не нужен.
Я также не вижу кода для обработки скобок в исходном коде, что кажется очень странным.Я изменяю здесь функцию, которая, кажется, работает так, как написано в документации.
new_search = function (string, restrict = c("functions", "vignettes", "views"),
format = c("normal", "short"), sortby = c("score", "date:late",
"date:early", "subject", "subject:descending", "from",
"from:descending", "size", "size:descending"), matchesPerPage = 20)
{
if(grepl("[{}]",string)){
string = gsub("[{}]","",string)
reserved <- TRUE
}else{
reserved <- FALSE
}
string <- paste0("http://search.r-project.org/cgi-bin/namazu.cgi?query=",
URLencode(string, reserved = reserved))
mpp <- paste0("max=", matchesPerPage)
format <- paste0("result=", match.arg(format))
restrictVALS <- c("functions", "vignettes", "views")
restr <- match.arg(restrict, choices = restrictVALS, several.ok = TRUE)
restr <- paste(paste0("idxname=", restr), collapse = "&")
sortby <- match.arg(sortby)
sortby <- paste0("sort=", switch(sortby, score = , `date:late` = ,
`date:early` = sortby, subject = "field:subject:ascending",
`subject:descending` = "field:subject:descending", from = "field:from:ascending",
`from:descending` = "field:from:descending", size = "field:size:ascending",
`size:descending` = "field:size:descending"))
qstring <- paste(string, mpp, format, sortby, restr, sep = "&")
browseURL(qstring)
cat(gettextf("A search query has been submitted to %s",
"http://search.r-project.org"), "\n", sep = "")
cat(gettext("The results page should open in your browser shortly\n"))
invisible(qstring)
}
Это кажется очень странным.Если мы делаем что-то не так, пожалуйста, дайте нам знать, и я приму ответ.Если это указывает на ошибку, нам нужно что-то с этим сделать.