elk*_*lke 21 r rstudio knitr r-markdown
什么是相当于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
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但结果test.html并没有像在RStudio中那样漂亮.任何建议如何通过命令行最好地编织.Rmd文件.html,并最终得到漂亮.html?
额外的问题:什么是最好的命令行的解决方案.pdf或.docx?
Geo*_*tas 42
rmarkdown::render("test.Rmd", "html_document")
Run Code Online (Sandbox Code Playgroud)
跟进接受的答案,我起草了一个名为“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
Run Code Online (Sandbox Code Playgroud)
我更简单的命令行脚本,类似于 Tyler R. 的:
在您的.profile或类似的,添加:
function knit() {
R -e "rmarkdown::render('$1')"
}
Run Code Online (Sandbox Code Playgroud)
然后在命令行输入 knit file.Rmd
编辑:对于很好的自动完成,请参阅评论
我在 Rmd 标头中设置了输出格式:output: github_document或类似的
| 归档时间: |
|
| 查看次数: |
6928 次 |
| 最近记录: |