什么是相当于RStudio的Knit HTML的简洁命令行?

时间:2015-08-24 13:17:26

标签: r rstudio knitr r-markdown

什么是与RStudio的Knit HTML相当的简洁命令行?给定.Rmd文件,您可以使用RStudio使用Knitr编织.html.docx.pdf文件。将此过程完全转移到命令行会很棒。到目前为止我的方法:

Rscript -e "library(knitr); knit('test.Rmd')"  # This creates test.md
pandoc test.md >> test.html

这样可以正常工作,但结果test.html并没有像在RStudio中那样漂亮。有关如何通过命令行最好将.Rmd个文件编织到.html并最终使用漂亮.html的任何建议?

额外问题:.pdf.docx的最佳命令行解决方案是什么?

3 个答案:

答案 0 :(得分:2)

在接受答案之后,我起草了一个名为“ knitter”的bash脚本,它将执行所需的所有操作,用户所需要做的就是输入:./knitter file.Rmd file.html./knitter file.Rmd file.pdf。 >

脚本如下:

#!/bin/sh

### Test usage; if incorrect, output correct usage and exit
if [ "$#" -gt 2  -o  "$#" -lt 2 ]; then
    echo "********************************************************************"
    echo "*                        Knitter version 1.0                       *"
    echo "********************************************************************"
    echo -e "The 'knitter' script converts Rmd files into HTML or PDFs. \n"
    echo -e "usage: knitter file.Rmd file.{pdf,html} \n"
    echo -e "Spaces in the filename or directory name may cause failure. \n"
    exit
fi
# Stem and extension of file
extension1=`echo $1 | cut -f2 -d.`
extension2=`echo $2 | cut -f2 -d.`

### Test if file exist
if [[ ! -r $1 ]]; then
    echo -e "\n File does not exist, or option mispecified \n"
    exit
fi

### Test file extension
if [[ $extension1 != Rmd ]]; then
    echo -e "\n Invalid input file, must be a Rmd-file \n"
    exit
fi

# Create temporary script
# Use user-defined 'TMPDIR' if possible; else, use /tmp
if [[ -n $TMPDIR ]]; then
    pathy=$TMPDIR
else
    pathy=/tmp
fi
# Tempfile for the script
tempscript=`mktemp $pathy/tempscript.XXXXXX` || exit 1

if [[ $extension2 == "pdf" ]]; then
    echo "library(rmarkdown); rmarkdown::render('"${1}"', 'pdf_document')" >> $tempscript
    Rscript $tempscript
fi
if [[ $extension2 == "html" ]]; then
    echo "library(rmarkdown); rmarkdown::render('"${1}"', 'html_document')" >> $tempscript
    Rscript $tempscript
fi

答案 1 :(得分:0)

我更简单的命令行脚本,类似于Tyler R。:

在您的.profile中,添加:

function knit() {
    R -e "rmarkdown::render('$1')"
}

然后在命令行上键入knit file.Rmd

我在Rmd标头中设置了输出格式:output: github_document或类似的

答案 2 :(得分:0)

getwd()
setwd("C:Location of the RMD File")

# To make it in to PDF you can use the below code also
rmarkdown::render("Filname.Rmd")

# To make it in to PDF you can use the below code also
rmarkdown::render("Filename", "pdf_document")

我在R脚本中输入了上述内容,并从Python命令提示符处触发了它,并解决了我的要求:) 请注意:如果不起作用,请尝试安装乳胶,然后重试。最好:)