R 包中的 ggplot2:CRAN 测试期间的注意事项

Posted

技术标签:

【中文标题】R 包中的 ggplot2:CRAN 测试期间的注意事项【英文标题】:ggplot2 inside R packages: Notes during CRAN tests 【发布时间】:2015-10-24 18:58:44 【问题描述】:

我正在编写一个使用许多 ggplot2 函数的 R 包。问题是在 CRAN 测试期间,我有许多与 ggplot 函数相关的注释(见下文)。鉴于这种情况,在我的函数中使用 ggplot2 以避免来自 CRAN 的这些注释的最佳方法是什么?

我的代码示例:

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:全局变量“斜率”没有可见的绑定 plot_influ_phylolm:全局变量没有可见的绑定 '..密度..' plot_influ_phylolm:没有可见的全局函数定义 'geom_histogram' plot_influ_phylolm:没有可见的全局函数定义 'geom_density' plot_influ_phylolm:没有可见的全局函数定义 ‘geom_vline’ plot_influ_phylolm:“xlab”没有可见的全局函数定义 plot_influ_phylolm:“主题”没有可见的全局函数定义

【问题讨论】:

【参考方案1】:

不提倡规避规则,但是当您弄清楚所有导入的来源时,您始终可以将以下内容用于global variables:

slope <- density <- NULL

在变量出现在代码中之前,将上述内容添加到这些变量出现的.R 文件中。 这个问题已经在这个网站here和here上得到了更详细的解决。

至于函数定义,要准确地确定要使用 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。可以说这使代码更清晰,尽管它可能会变得有点乏味并且确实会增加一些执行时间的开销。如上所述,这仍然需要您声明导入。

【讨论】:

非常感谢您的解释。我会试试看,如果有效,我会告诉你! 太好了,这解决了我的问题!我使用了@importFrom ggplot2 aes geom_point 等。现在笔记不见了。我用 NULL 方法解决的变量。变量 1 【参考方案2】:

您需要将相关的Imports:添加到DESCRIPTION,并将importFrom(...)添加到NAMESPACE。最近对此进行了很多讨论,例如参见 this thread on r-package-devel 及其对进一步讨论的引用。

【讨论】:

感谢您的回复,我会查看帖子并给您一些反馈。

以上是关于R 包中的 ggplot2:CRAN 测试期间的注意事项的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts))

R中的Cartogram + choropleth地图

R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图2D密度估计MASS包中的kde2d函数实现2D密度估计geom_density2d函数可视化二维密度图

R 3.6.0 中的 data.table 包中是不是存在内存泄漏?

(数据科学学习手札55)利用ggthemr来美化ggplot2图像

R语言可视化——ggplot2画回归曲线