首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Knitr的管道R降价?

通过Knitr的管道R降价?
EN

Stack Overflow用户
提问于 2013-09-19 08:23:55
回答 2查看 1.4K关注 0票数 1

我从this question中发现,您可以从如下脚本调用Knitr

代码语言:javascript
复制
Rscript -e "library(knitr); knit('myfile.Rmd')

但是有没有办法让它使用stdin和stdout而不是文件呢?

我尝试了几种不同的版本

代码语言:javascript
复制
Rscript -e 'library(knitr); knit2html(text=readLines(), output=stdout())'

但到目前为止,还没有一个奏效。

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

EN

回答 2

Stack Overflow用户

发布于 2014-04-11 06:08:43

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

代码语言:javascript
复制
#!/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就出来了。忽略任何错误。

票数 1
EN

Stack Overflow用户

发布于 2015-12-15 07:09:34

以下是一个版本:

代码语言:javascript
复制
#!/bin/Rscript
library(knitr)
input <- readLines('stdin')
invisible(knit(text=input, output=stdout(), quiet=TRUE))

然后(假设脚本是knit.R,rmd文件是test.R,md到html的转换是multimarkdown

代码语言:javascript
复制
knit.R < test.Rmd | multimarkdown > test.html
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18884453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档