簡體   English   中英

使用帶有knitr的packrat庫和rstudio編譯PDF按鈕

[英]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文件)。 幾點說明:

  • 我想使用.Rproj文件打開項目,並將project-a /作為工作目錄
    • 如果這是真的,那么packrat可以找到library.R腳本
    • 但是.rnw文件在編譯時仍然默認為自己的工作目錄
  • 我想到了一個.Rprofileknitr::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM