使用sprintf时跳过R中的%

时间:2015-08-10 19:04:56

标签: r printf

我正在使用" sprintf"在R中起作用以生成一些ggplot标签的数字。问题是我希望这些数字的百分比如下:

sprintf("paste(round(%s*100, 2), '\\%', sep='')", data_plot[1])

正如您所看到的,我正在使用" \"所以sprintf函数不会将它作为特殊字符处理,但我仍然收到以下错误:

Error in sprintf("paste(round(%s*100, 2), '%', sep='')", names(data_plot [1]) : too few arguments

当我更换"%"例如" +"一切正常。我发现了一些关于这个的帖子,以及我如何编写一个单独的函数来处理这个问题,但我想知道是否有更简单的方法。

注意:这行代码是ggplot代码的一部分,因此必须像这样编写。

由于

2 个答案:

答案 0 :(得分:3)

您可以使用pastesprintf,也不需要两者。所以,像

dat <- data.frame(x=seq(0.01, 1, len=10), y=runif(10))

ggplot(dat, aes(x, y)) +
  geom_point() +
  scale_x_continuous(breaks=dat$x, labels=sprintf("%.2f%%", 100*dat$x))

enter image description here

答案 1 :(得分:2)

您需要在"%%"中使用sprintf来打印单个"%"