[英]Using packrat libraries with knitr and the rstudio compile PDF button
正如上文由藝輝謝這篇文章 ,當一個人使用RStudio IDE的編譯PDF按鈕,從.Rnw文件生成PDF, knit()
使用globalenv()
一個新的R會話。 有沒有辦法讓這個新的R會話使用我的項目的packrat
庫(甚至是我的packrat
庫中包含的knitr
版本)而不是我的個人用戶庫來確保最大程度的可重復性? 我想新的R會話必須與項目本身相關聯,但我不知道如何有效地做到這一點。
我知道我可以直接使用knit()
函數而不是編譯PDF按鈕,這樣, knit()
將使用我當前的globalenv()
,但我不喜歡這個解決方案,因為它的可重現性較差。
我想我自己也遇到了這個問題,但我希望與能夠證實我是對的其他人分享,並可能有助於改進我的解決方案。
我的具體問題是我的.Rnw文件位於我整個項目的子目錄中。 當“編譯PDF”按鈕創建新的R會話時,它將在此子目錄中創建,因此無法找到將初始化packrat
的.Rprofile
文件。 我認為最簡單的解決方案是在我的子目錄中創建一個.Rprofile
文件,其中包含
temp <- getwd()
setwd("..")
source("packrat/init.R")
setwd(temp)
rm(temp)
我必須在source("packrat/init.R")
之前更改項目級別的工作目錄,因為文件本身引用了目錄...
有誰能看到更好的解決方案?
P.,
我不知道這個解決方案是否適用於knitr
包,但我99%肯定它適用於所有其他包,因為它似乎對我來說。
(我相信)我有一個非常相似的問題。 我有我的項目文件夾,但我的工作目錄一直是我的.rnw文件所在的子文件夾 ,位於我的項目文件夾的子目錄中。
鏈接到Yihiu Xie的答案非常有幫助。
最初我想要一個項目文件夾,例如:
project-a/
working/
data/
datas.csv
analysis/
library.R
rscripts.R
rnw/
report.rnw
child/
preamble.rnw
packrat/
但是當我的R library()
調用不在工作目錄中並且packrat
無法解析.rnw文件時,我不確定是否可以使用packrat
(我使用source()
從chunck調用library.R文件source()
.rnw文件)。 幾點說明:
packrat
可以找到library.R腳本 knitr::opts_knit$set(root.dir = "..")
的工作,但我不認為它的工作原理像乳膠命令input\\
,默認回目錄包含.rnw文件
r chunks
,一個用於你的乳膠! 由於.rnw總是設置工作目錄,我將我的library.R腳本放在與我的.rnw文件相同的目錄中,該文件在project-a / working / rnw中創建了packrat
文件夾。 我99%肯定這是有效的,因為當我在項目-a / working / rnw文件夾中創建packrat
文件夾時沒有重新定位library.R文件它收到一個錯誤,沒有找到包,我無法編譯.rnw文件。
project-a/
working/
data/
datas.csv
analysis/
rscripts.R
rnw/
report.rnw
library.R
packrat/
child/
preamble.rnw
再說一遍,除非我忽視某些東西或誤解了正在使用哪些軟件包,否則這似乎對我有用。 免責聲明我對packrat
相對較新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.