【问题标题】:Pipe R markdown through Knitr?通过 Knitr 管道 R 降价?
【发布时间】:2013-09-19 00:23:54
【问题描述】:

我从this question 发现,您可以通过这样的脚本调用Knitr

Rscript -e "library(knitr); knit('myfile.Rmd')

但是有没有办法让它使用标准输入和标准输出而不是文件?

我尝试了几种变化

Rscript -e 'library(knitr); knit2html(text=readLines(), output=stdout())'

但到目前为止还没有任何工作。

编辑:我想最坏的情况是,我可以编写一个包装脚本,将标准输入写入临时文件,在其上调用 knitr,回显输出文件,然后删除它们。但这有点难看:(

【问题讨论】:

标签: r pipe markdown knitr r-markdown


【解决方案1】:

好的,我今天又试了一次,这是一个工作脚本:

#!/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 出来了。忽略任何错误。

【讨论】:

    【解决方案2】:

    这是一个版本:

    #!/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
    

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2016-12-13
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      相关资源
      最近更新 更多