使用sprintf时在R中获得无效的格式响应 - 格式无效'%he'

时间:2015-11-05 00:02:21

标签: r

我试图动态构建一个html文件,其中一个变量将取决于目录中与模式匹配的文件数。这是代码:

html <- '
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset = "utf-8">
    <title>Sankey Plot Test</title>
    <script type = "text/javascript" src = "http://code.jquery.com/jquery-latest.min.js"></script>
  </head>

  <body>
    <iframe src = "plot0.html" width = 100% height = 1000px id = "sankey" style = "border: none"></iframe>
    <script>
      $(function() {
        var selector = $("#sankey");
        var delay_sec = 1;
        var num = 1, 
            len = %d;
        setInterval(function() {
          num = (num === len) ? 0 : num;
          selector.attr("src", "plot" + num + ".html");
          num++;
        }, delay_sec * 1000);
      });
    </script>
  </body>
</html>'
n <- list.files(path = "path/to/files", pattern = "plot\\d+.html") %>% length()
html <- sprintf(html, n)

尽管使用了%d,但它返回的错误表明我的整数对象的格式不正确。我在使用%dsprintf时使用asm( "number: \n" ".long 0xFFFFFFFF \n" [snip rest of array] ); 时提到了其他一些提及错误格式错误的问题,但没有一个像我看到的那样。

任何有关正在发生的事情的见解都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:4)

你的问题在这一行:

<iframe src = "plot0.html" width = 100% height 

注意%。您可以使用另一个%来逃避%:

<iframe src = "plot0.html" width = 100%% height

当sprintf在字符串中运行时,它将正确输出100%。