运行R文件以从命令行(终端)呈现bookdown输出

运行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::

我正试图从命令行运行一个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::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)"