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 variable
s:
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语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图2D密度估计MASS包中的kde2d函数实现2D密度估计geom_density2d函数可视化二维密度图
R 3.6.0 中的 data.table 包中是不是存在内存泄漏?