Подтвердить что ты не робот

Что такое аккуратная командная строка, эквивалентная RStudio Knit HTML?

Что такое аккуратная командная строка, эквивалентная RStudio Knit HTML? Учитывая файл .Rmd, вы можете использовать RStudio для вязания файлов .html, .docx и .pdf с помощью Knitr. Было бы здорово полностью перевести этот процесс в командную строку. Мой подход до сих пор:

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

Это отлично работает, но в результате test.html не приходит с тем же самым, что и в RStudio. Любые предложения о том, как лучше всего вставлять .Rmd файлы в .html через командную строку и заканчивать симпатичным .html?

Дополнительный вопрос: что было бы лучшим решением командной строки для .pdf или .docx?

4b9b3361

Ответ 1

rmarkdown::render("test.Rmd", "html_document")

Ответ 2

Следуя принятому ответу, я разработал сценарий bash под названием "knitter", который будет делать все необходимое, все, что нужно сделать пользователю, это ввести: ./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

Ответ 3

Мой более простой сценарий командной строки, похожий на скрипт Тайлера Р.:

В вашем .profile добавьте:

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

Затем в командной строке введите knit file.Rmd

Я установил выходной формат в заголовке Rmd: output: github_document или аналогичный