R 粘贴和折叠向量并用引号括起来
我试图通过从excel文件中提取一个向量,在API查询中形成一个select语句 我从excel文件中提取的向量是:R 粘贴和折叠向量并用引号括起来,r,paste,quotation-marks,R,Paste,Quotation Marks,我试图通过从excel文件中提取一个向量,在API查询中形成一个select语句 我从excel文件中提取的向量是: X <-c("name", "type", "target") 不过,我想要的输出是将select变量括在引号中,如下所示: "https://url/api/data/v8.2/table1?$select="name","type","target". path <- paste0(`url`,`table`,"?$select=",paste('"',`X`
X <-c("name", "type", "target")
不过,我想要的输出是将select变量括在引号中,如下所示:
"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".
path <- paste0(`url`,`table`,"?$select=",paste('"',`X`,'"', collapse = ","))
有人知道我如何通过引用每个选定变量来获得所需的输出吗?我们可以使用
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'"
如果X中有n个元素
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'"
在OP的帖子中,如果是双引号,则是转义字符。我们可以通过
cat
查看,谢谢。在我的实际向量中,大约有50个观察值(在我的示例中,我只包括3个)。你知道一种不必像你的例子中那样显式地命名每个字符串就可以应用引号的方法吗:“{X[1]}”、“{X[2]}”、“{X[3]}”?@SteveM你可以做Do.call(sprintf,c(fmt=”https://url/api/data/v8.2/table1?$select='%s','%s','%s',as.list(X))
感谢您的及时回复和帮助。我仍然必须输入“%s”,因为有记录的次数很多。如果我的向量中有50条记录,那么我的代码行中必须有50次“%s”。无论如何,要避免这种情况?@SteveM这更容易。您可以使用paste(rep(“%s”),collapse=“,”)创建格式
谢谢akrun。我想我是想得太多了。现在一切都好了。谢谢你的帮助!我建议你考虑一下具体的任务是什么,以及为它设计了什么工具。因此,在根据一些参数组合URL的情况下,有一些相关的包(可能还有一些基本的或utils
函数)。或者,如果您需要使用参数组合API调用,您可以跳过URL程序集,使用类似于httr
的内容。进行一些讨论
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'"
library(glue)
glue("https://url/api/data/v8.2/table1?$select='{X[1]}','{X[2]}', '{X[3]}'")