Ответ 1
rmarkdown::render("test.Rmd", "html_document")
Что такое аккуратная командная строка, эквивалентная 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
?
rmarkdown::render("test.Rmd", "html_document")
Следуя принятому ответу, я разработал сценарий 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
Мой более простой сценарий командной строки, похожий на скрипт Тайлера Р.:
В вашем .profile
добавьте:
function knit() {
R -e "rmarkdown::render('$1')"
}
Затем в командной строке введите knit file.Rmd
Я установил выходной формат в заголовке Rmd: output: github_document
или аналогичный