9

我正在使用 knitr 生成 HTML 报告,并且我想包含作者和生成日期元标记。

我的 Rhtml 页面看起来像这样。

<html>
<head>
  <meta name="author" content="<!--rinline Sys.getenv('USERNAME') -->">
  <meta name="date" content="<!--rinline as.character(Sys.time()) -->"> 
</head>
<body>
</body>
</html>

不幸的是,在我之后knit("test.Rhtml"),knitr 生成的 HTML 是

  <meta name="author" content="<code class="knitr inline">RCotton</code>">
  <meta name="date" content="<code class="knitr inline">2013-01-02 14:38:16</code>"> 

这不是有效的 HTML。我真正想要生成的是

  <meta name="author" content="RCotton">
  <meta name="date" content="2013-01-02 14:38:16">

我可以生成没有code包装标签的 R 代码吗?还是有另一种方法来指定标签属性(如这些内容属性)?

到目前为止,我最糟糕的计划是使用readLines/ str_replace/手动修复内容writeLines,但这似乎相当笨拙。

4

2 回答 2

13

另一种(未记录的)方法是I()在您的内联代码周围添加以在没有标签的情况下按原样打印字符<code>,例如

<html>
<head>
  <meta name="author" content="<!--rinline I(Sys.getenv('USERNAME')) -->">
  <meta name="date" content="<!--rinline I(as.character(Sys.time())) -->"> 
</head>
<body>
</body>
</html>
于 2013-01-02T17:37:15.433 回答
4

不是很好,但似乎无需添加钩子就可以工作:

<head>
<!--begin.rcode results='asis', echo=FALSE
cat('
  <meta name="author" content="', Sys.getenv('USERNAME'), '"> 
  <meta name="date" content="', as.character(Sys.time()),'-->"> 
',sep="")
end.rcode-->

</head>
于 2013-01-02T16:30:23.617 回答