如何在R语言中转义百分号符号“%”?

22

在url中,我正在处理特殊字符'%', 我应该将其作为字符串传递。该url包含一些参数,因此我使用sprintf。如何在r中转义符号'%'?

start <- 1
#%s is my variable
url<-(sprintf('https://www.amazon.com/s/ref=sr_pg_%s?rh=n%3A172282%2Cn%3A%21493964%2Cn%3A502394%2Cn%3A281052%2Cn%3A12556502011%2Cn%3A3017941&page=%s&ie=UTF8', start, start))
无效格式 '%2Cn%3A';对于字符对象,请使用格式 %s。

你是不是想说%d而不是%s? - akrun
7
为了避免特殊符号被识别为变量,你需要使用双百分号进行转义,即 '%%'。参考链接:https://dev59.com/eU7Sa4cB1Zd3GeqP7_Gb - Alex
@Alex 谢谢,我没有考虑它,因为它是用C++编写的。 - user7056597
1个回答

32

sprintf 的帮助文件所述:

它是 C 函数 sprintf 的包装器,...

因此,您在 R 中的转义方式与在 C 中相同,使用双百分号 %% 来生成一个 %,如下:

如何转义 sprintf() 中的 % 符号,以避免其被识别为变量?

在您的代码中,我们生成了一个 URL,可能提取了此 amazon.com 搜索的第一页:

url<-(sprintf('https://www.amazon.com/s/ref=sr_pg_%s?rh=n%%3‌​A172282%%2Cn%%3A%%21‌​493964%%2Cn%%3A50239‌​4%%2Cn%%3A281052%%2C‌​n%%3A12556502011%%2C‌​n%%3A3017941&page=%s‌​&ie=UTF8', start, start))

产生

> url
[1] "https://www.amazon.com/s/ref=sr_pg_1?rh=n%3A172282%2Cn%3A%21493964%2Cn%3A502394%2Cn%3A281052%2Cn%3A12556502011%2Cn%3A3017941&page=1&ie=UTF8"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接