运行R文件以从命令行(终端)呈现bookdown输出
我正试图从命令行运行一个R文件(从终端——在macOS 10.13.3上) 按照中的说明,我添加了运行R文件以从命令行(终端)呈现bookdown输出,r,terminal,bookdown,R,Terminal,Bookdown,我正试图从命令行运行一个R文件(从终端——在macOS 10.13.3上) 按照中的说明,我添加了#![path/to/file.R]作为R文件的第一行 然后,当我在终端中键入Rscript[path/to/file.R]时,要测试其工作情况的文件的一部分似乎正在运行(我添加了print()语句),但是,下一行: rmarkdown::render\u站点(输出格式='bookdown::pdf\u book',编码='UTF-8') 导致此错误的原因: Error in rmarkdown::
#![path/to/file.R]
作为R文件的第一行
然后,当我在终端中键入Rscript[path/to/file.R]
时,要测试其工作情况的文件的一部分似乎正在运行(我添加了print()
语句),但是,下一行:
rmarkdown::render\u站点(输出格式='bookdown::pdf\u book',编码='UTF-8')
导致此错误的原因:
Error in rmarkdown::render_site(output_format = "bookdown::pdf_book", :
No site generator found.
为什么print()
语句似乎工作正常,但这一行(用于呈现bookdownbook)却工作不正常
我试图运行的文件位于GitHub上 您可以使用这样一个简单的脚本,例如保存到
compile.book.sh
#!/bin/sh
## Get the path to the book
BOOK_PATH=$1
## Get the current path
CURRENT_PATH=$(pwd)
## Get to the right path
cd ${BOOK_PATH}
## Compile the book
R -e 'rmarkdown::render_site(output_format = 'bookdown::pdf_book', encoding = 'UTF-8')'
## Get back to the previous path
cd ${CURRENT_PATH}
然后,您可以从机器中的任何位置(从终端)执行编译,如下所示:
使用
path/to/Rfolder
作为index.Rmd
所在的文件夹。例如,您可以使用这样一个简单的脚本保存到compile.book.sh
#!/bin/sh
## Get the path to the book
BOOK_PATH=$1
## Get the current path
CURRENT_PATH=$(pwd)
## Get to the right path
cd ${BOOK_PATH}
## Compile the book
R -e 'rmarkdown::render_site(output_format = 'bookdown::pdf_book', encoding = 'UTF-8')'
## Get back to the previous path
cd ${CURRENT_PATH}
然后,您可以从机器中的任何位置(从终端)执行编译,如下所示:
由于path/to/Rfolder
是您的index.Rmd
所在的文件夹。对于Markdown,我在的示例目录中放置了以下内容大约1 1/2年,并使用它渲染了数百次
注意,它调用了rmarkdown::render()
,但您需要一种bookdown格式,因此我认为您可能需要编写一个非常类似的脚本,调用bookdown::render\u book()
或类似的函数
当然,您可以完全按照Makefiles中的一行程序进行操作,很多人都是这样做的。下面是一个将所有Rmd文件映射到pdf文档的文件(这是我的标准工作流程,我不做太多html):
sources:=$(通配符*.Rmd)
幻灯片:=$(来源:.Rmd=.pdf)
全部:${slides}
%.pdf:%.Rmd
Rscript-e“rmarkdown::render(\”$对于Markdown,我在的示例目录中使用了大约1 1/2年,并使用它渲染了数百次
注意,它调用了rmarkdown::render()
,但您需要一种bookdown格式,因此我认为您可能需要编写一个非常类似的脚本,调用bookdown::render\u book()
或类似的函数
当然,您可以完全按照Makefiles中的一行程序进行操作,许多人都可以这样做。下面是一个将所有Rmd文件映射到pdf文档的程序(这是我的标准工作流程,我不做太多html):
sources:=$(通配符*.Rmd)
幻灯片:=$(来源:.Rmd=.pdf)
全部:${slides}
%.pdf:%.Rmd
Rscript-e“rmarkdown::render(\”$
sources := $(wildcard *.Rmd)
slides := $(sources:.Rmd=.pdf)
all: ${slides}
%.pdf: %.Rmd
Rscript -e "rmarkdown::render(\"$<\", clean=TRUE)"