簡體   English   中英

R軟件包中的ggplot2:CRAN測試期間的注意事項

[英]ggplot2 inside R packages: Notes during CRAN tests

我正在寫一個使用許多ggplot2函數的R包。 問題是在CRAN測試期間,我有很多與ggplot函數有關的ggplot (請參見下文)。 在這種情況下,為了避免來自CRAN的這些說明,在函數中使用ggplot2的最佳方法是什么?

我的代碼示例:

s1 <- ggplot2::ggplot(result,aes(x=slope,y=..density..),
            environment = environment())+
            geom_histogram(fill="lightyellow", 
                           alpha=.9,colour="grey60", size=.2) +
            geom_density(size=.2) +
            geom_vline(xintercept = slope.0,color="red",linetype=2,size=.7)+
            xlab("Estimated slopes")+
            theme(axis.text = element_text(size=14),
                  axis.title = element_text(size=16))

CRAN注意:

plot_influ_phylolm:“ aes”沒有可見的全局函數定義
plot_influ_phylolm:全局變量“ slope”沒有可見的綁定
plot_influ_phylolm:全局變量“ ..density ..”沒有可見的綁定
plot_influ_phylolm:“ geom_histogram”沒有可見的全局函數定義
plot_influ_phylolm:“ geom_density”沒有可見的全局函數定義
plot_influ_phylolm:“ geom_vline”沒有可見的全局函數定義plot_influ_phylolm:“ xlab”沒有可見的全局函數定義
plot_influ_phylolm:“主題”沒有可見的全局函數定義

您需要將相關的Imports:添加到DESCRIPTION ,並將importFrom(...)NAMESPACE 最近對此進行了相當多的討論,例如,請參見r-package-devel上的該線程及其對進一步討論的參考。

不提倡避免規則,而是在確定所有導入的來源時,始終可以對global variable s使用以下內容:

slope <- density <- NULL

將上述內容添加到這些變量所在的.R文件中,然后在代碼中以此類推。 此問題已在此站點的此處此處得到更詳細的解決。

至於函數定義,要弄清楚要使用ggplot2一樣大的NAMESPACE導入哪些函數,這很棘手,因此也許最容易導入整個包。 我意識到這也不是“最佳實踐”,但是它應該使您通過CRAN檢查。 如果使用roxygen我通常使用軟件包的描述文件,例如myPkg_package.R

#' @name myPkg-package
#' @docType package
#' @keywords package
#'
#' @import ggplot2
#'
NULL

或者,對於選擇性導入:

#' @importFrom ggplot2 theme

然后,您將需要編輯DESCRIPTION文件以包括以下內容:

Imports: ggplot2

您甚至可能想要使用Depends:為此,但是不鼓勵在CRAN上依賴多個包(例如> 4)。

當然,您每次都可以指定NAMESPACE,例如,每次調用函數時將theme更改為ggplot2::theme 可以說這使代碼更清晰,盡管它可能會有些乏味並且確實增加了執行時間。 如上所述,這仍然需要您聲明導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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