将Rmarkdown命令行参数打印到html报告中

时间:2017-07-10 16:49:32

标签: r command-line r-markdown

我尝试生成Rmarkdown html报告,其中Rmarkdown通过命令行调用。我希望标题能够通过命令行参数传递信息。

这是我的Rmarkdown代码:

```{r setup.n.args, include=FALSE}
suppressPackageStartupMessages(library(knitr))
suppressPackageStartupMessages(library(DT))
suppressPackageStartupMessages(library(Cairo))
knitr::opts_chunk$set(dev="CairoPNG")
knitr::opts_chunk$set(echo=FALSE,out.width='1000px',dpi=200,fig.keep="all")
options(width = 1000)
options(knitr.table.format = "html")

args <- commandArgs(trailingOnly=T)
parseArgs <- function(x) strsplit(sub("^--", "", x), "=")
args.df <- as.data.frame(do.call("rbind", parseArgs(args)))
args.list <- as.list(as.character(args.df$V2))
names(args.list) <- args.df$V1
```

---
title: "`r args.list$title`"
author: "`r args.list$author`"
date: "`r format(Sys.time(), '%d %B, %Y, %H:%M')`"
output: html_document
  html_document:
      keep_md: true
---


# Table
```{r table,warning=FALSE,message=FALSE,echo=FALSE}
datatable(args.df,rownames = FALSE,class='cell-border stripe')
```

这是我的命令行调用它:

R -e "rmarkdown::render('test.Rmd',output_file='test.html')" --args --title=test --author='test test'

不幸的是没有创建标题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

更改YAML前端问题的<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" version="3.0"> <xsl:output indent="yes"/> <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="*"> <xsl:copy> <xsl:apply-templates select="@*"/> <xsl:for-each-group select="*" group-adjacent="node-name() eq xs:QName('childA'), @style" composite="yes"> <xsl:choose> <xsl:when test="current-grouping-key()[1]"> <xsl:copy> <xsl:apply-templates select="@*, current-group()/node()"/> </xsl:copy> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="current-group()"/> </xsl:otherwise> </xsl:choose> </xsl:for-each-group> </xsl:copy> </xsl:template> </xsl:stylesheet> 部分
output

output: html_document
  html_document:
      keep_md: true

并且output: html_document: keep_md: true 被错误地解析了。

在命令行中,从

更改
--author

--author='test test'

将解决这个问题。