我的目标是使用knitr为与数据集中每个因子级别相关的数据生成单独的PDF。但是,我遇到了各种错误(包含在下面),我无法编译生成的.tex文件。 我已尝试使用主题here以及Yihui的GitHub代码here上的主要SO帖子进行故障排除,但我仍未获得最终产品。 I怀疑可能还有其他用户在查看列出的资源后仍然在努力做到这一点。
这是一个虚拟示例,我一直在尝试隔离我在更长的脚本中遇到的错误。使用“钻石”数据集:
# test.Rnw ----------------------------------------------
\documentclass[10pt]{article}
\usepackage[margin=1.15 in]{geometry}
\begin{document}
<<setup, include=FALSE, results='hide', cache=FALSE>>=
library(ggplot2)
opts_chunk$set(echo=FALSE, warning = FALSE, message = FALSE, cache = FALSE, error = FALSE,
fig.path = paste('~/Desktop/figure/diamonds', x, sep = '')))
@
<<loaddata, echo=FALSE, message=FALSE>>=
slice <- diamonds[ diamonds$cut == x,]
@
<<test_image>>==
mybars = ggplot(slice) +
geom_bar(aes(x = color, stat = "bin"))
@
<<print_image, results='asis'>>==
mybars
@
\end{document}
和
# dispatcher.R -------------------------------------------
library(knitr)
diamonds = diamonds[diamonds$cut != "Very Good",]
# I did this ^ just in case the space caused problems in file paths.
lapply(unique(diamonds$cut), function(x)
knit("~/Desktop/test.Rnw",
output=paste('~/Desktop/', x, '.tex', sep="")))
lapply(unique(diamonds$cut), function(x)
tools::texi2pdf(paste('~/Desktop/test/diamonds', x, '.tex',sep=""),
clean = TRUE, quiet = TRUE, texi2dvi = getOption("/usr/bin/texi2dvi")))
当我运行dispatcher.R时,我会获得每个剪切级别的.tex文件和图像(PDFS)。那很棒!但是,我仍然没有得到完全编译的PDF。这很重要,因为需要将具有多个块,文本,图像等的文档编译成一个PDF文档。
我也尝试使用knit2pdf,但结果相同:图像,.tex文件,没有编译的PDF。我的R控制台显示通常的编译消息,但PDF无处可寻。
for(x in unique(diamonds$cut)){
knit2pdf("~/Desktop/test.Rnw",
output=paste0('~/Desktop/diamonds', x, '.tex'))
}
processing file: ~/Desktop/test.Rnw
|....... | 11%
ordinary text without R code
|.............. | 22%
label: setup (with options)
List of 3
$ include: logi FALSE
$ results: chr "hide"
$ cache : logi FALSE
|...................... | 33%
ordinary text without R code
|............................. | 44%
label: loaddata (with options)
List of 2
$ echo : logi FALSE
$ message: logi FALSE
我做错了什么?这有足够的信息吗?
答案 0 :(得分:0)
我原帖的问题主要与将乳胶指向.Rnw文件和opts_chunks()中的fig.path的路径问题有关。以下答案对我有用,我已经能够将其用作其他项目的模板。
#test.R
library("knitr")
diamonds = diamonds[diamonds$cut != "Very Good",]
for(x in unique(diamonds$cut)){
setwd("/Users/me/Desktop/thing")
knit2pdf("test.Rnw",
output=paste0(x, '.tex'))
}
和
%test.Rnw
\documentclass{article}
\usepackage[margin=.5in, landscape]{geometry}
\begin{document}
TEST TEXT!
<<setup, include=FALSE, results='hide', cache=FALSE>>=
opts_chunk$set(echo=FALSE, warning = FALSE, message = FALSE, cache = FALSE, error = FALSE,
fig.path = paste0('figure/', x))
library(ggplot2)
@
<<loaddata, message=FALSE>>=
slice <- diamonds[ diamonds$cut == x,]
head(slice)
@
<<test_image, echo = FALSE>>==
mybars = ggplot(slice) +
geom_bar(aes(x = color, stat = "bin"))
@
<<printplotscreen, results='asis'>>==
mybars
@
\end{document}