【问题标题】:ggplot2 inside R packages: Notes during CRAN testsR 包中的 ggplot2:CRAN 测试期间的注意事项
【发布时间】: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:“主题”没有可见的全局函数定义

【问题讨论】:

    标签: r ggplot2 cran


    【解决方案1】:

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

    slope <- density <- NULL
    

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

    至于函数定义,要准确地确定要使用 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 及其对进一步讨论的引用。

    【讨论】:

    • 感谢您的回复,我会查看帖子并给您一些反馈。
    猜你喜欢
    • 1970-01-01
    • 2016-02-14
    • 2017-06-15
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2017-09-14
    相关资源
    最近更新 更多