R 区别于;编制PDF";和knit2pdf

R 区别于;编制PDF";和knit2pdf,r,latex,pdf-generation,knitr,pdflatex,R,Latex,Pdf Generation,Knitr,Pdflatex,我有一个.Rnw文件,我可以使用RStudio中的“compilepdf”按钮(或Command+Shift+k)将其编译成PDF但是,当我使用knit2pdf时,不会创建图形,也不会创建完整的PDF。为什么会发生这种情况?您如何专门设置图像的存储位置,以便pdflatex能够找到它们? 这里有一个例子。我知道我几天前发布的问题有一个类似的例子,但在我看来这是两个不同的问题 如果我点击“编译”,这个文件将正常运行并生成PDF。我没有得到任何错误,该图是在/figure目录中生成的,一切正常 %t

我有一个.Rnw文件,我可以使用RStudio中的“compilepdf”按钮(或Command+Shift+k)将其编译成PDF但是,当我使用knit2pdf时,不会创建图形,也不会创建完整的PDF。为什么会发生这种情况?您如何专门设置图像的存储位置,以便pdflatex能够找到它们?

这里有一个例子。我知道我几天前发布的问题有一个类似的例子,但在我看来这是两个不同的问题

如果我点击“编译”,这个文件将正常运行并生成PDF。我没有得到任何错误,该图是在/figure目录中生成的,一切正常

%test.Rnw
\documentclass{article}
\usepackage[margin=.5in, landscape]{geometry}
\begin{document}

This is some test text!

<<setup, include=FALSE, results='hide', cache=FALSE>>=
opts_chunk$set(echo=FALSE, warning = FALSE, message = FALSE,
 cache = FALSE, error = FALSE)
library(ggplot2)
@

<<printplotscreen, results='asis'>>=
ggplot(diamonds) + 
  geom_bar(aes(x = color, stat = "bin"))
@

\end{document}

注意:如果您正试图复制这个(谢谢!),那么请确保首先运行knit2pdf脚本,以确保它不会创建图形。如果您先点击“编译”,那么这些数字将在那里供knit2pdf使用,但它不能准确地表示情况

解决方案:确保在使用knit2pdf之前将工作目录设置为项目目录,然后将“输入”路径缩短为.Rnw文件。因此

test.R
library("knitr")
diamonds = diamonds[diamonds$cut != "Very Good",]

setwd("/Users/me/Desktop/thing")
knit2pdf(input = "test.Rnw", output = "test.tex")

以下是关于这个问题的一些参考资料:
; 似乎在使用
knit2pdf()
时,它会自动将输出文件设置为输入文件所在的目录。作者不建议我们在项目进行到一半时更改工作目录


因此,我目前的解决方案是将工作目录保存为旧目录(
getwd()
),将工作目录更改为要保存输出文件的位置,使用
knit2pdf()
输出文件,最后将工作目录更改为原始目录。

尝试将工作目录设置为
~/Desktop/thing
并在那里运行
knit2pdf
,而不是尝试重定向输出?为什么会有不同?(真正的问题,没有暗指尖刻的语气)因为它看起来好像是
knit2pdf
没有在正确的位置查找数字——它假设它们位于子目录
figure/
,如果LaTeX编译步骤假设所有文件引用都与
.tex
文件的位置相关,那么这可能不是真的?我不确定自己是否理解:这些数字都在figure/子目录中,“Compile PDF”在创建和查找它们时没有问题。是否有一种方法可以更改knit2pdf(…),以便它也可以创建和查找它们?我觉得奇怪的是,knit2pdf能够找到已经创建的图形(以及图形/子目录中的图形)。您的工作目录是什么(即
getwd()
)?关键是“编译PDF”构建在一个临时工作目录中,在那里它确切地知道所有内容的位置。我并不是说我完全理解为什么
knit2pdf()
不起作用,但我认为这是关于构建一个不在当前工作目录中的Rnw文件的问题。。。
test.R
library("knitr")
diamonds = diamonds[diamonds$cut != "Very Good",]

setwd("/Users/me/Desktop/thing")
knit2pdf(input = "test.Rnw", output = "test.tex")