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
に最適なコマンドラインソリューションは何ですか?
rmarkdown::render("test.Rmd", "html_document")
Tyler R.に似た、より簡単なコマンドラインスクリプト:
.profile
に以下を追加します:
function knit() {
R -e "rmarkdown::render('$1')"
}
次に、コマンドラインでknit file.Rmd
と入力します
Rmdヘッダーに出力形式を設定します:output: github_document
または類似
受け入れられた回答のフォローアップとして、必要なすべてを実行する「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