我尝试生成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'
不幸的是没有创建标题。
有什么想法吗?
答案 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'
将解决这个问题。