【发布时间】:2015-11-05 00:02:20
【问题描述】:
我正在尝试动态构建一个 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。我在 SO 上看到了其他几个问题,这些问题提到了在使用 %d 和 sprintf 时出现格式错误,但没有一个像我所看到的那样。
任何有关正在发生的事情的见解将不胜感激。谢谢!
【问题讨论】:
-
这是因为它作为
width = 100% height = 1000px的一部分访问了% he- 这可以通过一些非常基本的调试代表您识别出来。开始逐行删除您的html文本,直到您发现何时引入了错误。 -
你们两个是天才。谢谢!我可以改用
stringr::str_interp。 -
顺便说一下,XML包有改变html节点和属性的功能。我认为这将是更安全的路线,而不是进行字符串解析。
-
@RichardScriven 我没有对 HTML 文件进行字符串解析。我正在生成自己的 html,其中包含一个 iframe,该 iframe 将循环通过
rCharts小部件。如果您愿意,可以使用 HTML 文件的临时 gif。我只需要将长度变量设置为等于生成的文件数,我不知道如何在 javascript 中做到这一点。
标签: r