Rscript -e "library(knitr); knit('myfile.Rmd')
但是有没有办法让它使用标准输入和标准输出而不是文件?
我尝试了几种变化
Rscript -e 'library(knitr); knit2html(text=readLines(), output=stdout())'
但到目前为止还没有一个工作。
编辑:我想最坏的情况,我可以编写一个包装脚本,将标准输入写入临时文件,在其上调用 knitr,回显输出文件,然后删除它们。但这有点难看:(
Rscript -e "library(knitr); knit('myfile.Rmd')
但是有没有办法让它使用标准输入和标准输出而不是文件?
我尝试了几种变化
Rscript -e 'library(knitr); knit2html(text=readLines(), output=stdout())'
但到目前为止还没有一个工作。
编辑:我想最坏的情况,我可以编写一个包装脚本,将标准输入写入临时文件,在其上调用 knitr,回显输出文件,然后删除它们。但这有点难看:(
好的,我今天又试了一次,这是一个工作脚本:
#!/bin/bash
# Hacky version of what I thought should be doable like so:
# Rscript -e 'library(knitr); knit2html(text=readLines(), output=stdout())'
# Turns out you need tempfiles for some reason?
input="/tmp/input.Rmd"
output="/tmp/output.html"
rcode="library(knitr); knit2html(input=\"$input\", output=\"$output\")"
cat /dev/stdin > "$input"
Rscript -e "$rcode" &> /dev/null
cat "$output"
您输入 R markdown 并输出 HTML。忽略任何错误。
这是一个版本:
#!/bin/Rscript
library(knitr)
input <- readLines('stdin')
invisible(knit(text=input, output=stdout(), quiet=TRUE))
然后(假设脚本是knit.R,rmd 文件是test.R和 md 到 html 转换是multimarkdown:
knit.R < test.Rmd | multimarkdown > test.html