[英]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))
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.