Вставить и свернуть вектор и заключить в кавычки - PullRequest
2 голосов
/ 20 февраля 2020

Я пытаюсь сформулировать оператор SELECT в своем запросе API, извлекая вектор из файла Excel.

Вектор, который я извлекаю из файла Excel:

X <-c("name", "type", "target")

Затем я передаю этот вектор в путь запроса API следующим образом:

path <- paste0(`url`,`table`,"?$select=",paste(`X`, collapse = ","))

и получаю следующее:

"https://url/api/data/v8.2/table1?$select=name,type,target"

Желаемый вывод, который я хочу, - иметь переменные выбора заключенный в такие цитаты:

"https://url/api/data/v8.2/table1?$select="name","type","target".

Однако, когда я пытаюсь добавить цитаты в функцию вставки, например:

path <- paste0(`url`,`table`,"?$select=",paste('"',`X`,'"', collapse = ","))

, я получаю следующий вывод:

"https://url/api/data/v8.2/table1?$select=\" name \",\" type \",\" target \""

Кто-нибудь знает, как я могу получить желаемый результат с кавычками вокруг каждой выбранной переменной?

1 Ответ

1 голос
/ 20 февраля 2020

Мы можем использовать sprintf

sprintf("https://url/api/data/v8.2/table1?$select='%s','%s','%s'", X[1], X[2], X[3])
#[1] "https://url/api/data/v8.2/table1?$select='name','type','target'"

Если у нас есть 'n' количество элементов в 'X'

s1 <- paste(rep("'%s'", length(X)), collapse=",")
do.call(sprintf, c(fmt = paste0("https://url/api/data/v8.2/table1?$select=", s1), as.list(X) ))
#[1] "https://url/api/data/v8.2/table1?$select='name','type','target'"

или glue

library(glue)
glue("https://url/api/data/v8.2/table1?$select='{X[1]}','{X[2]}', '{X[3]}'")

В сообщении ОП, если это двойная кавычка, это escape-символ. Мы можем проверить с cat

...