我正在创建具有一些功能的包装。仅一个辅助功能需要plotly
。
但是,当我使用devtools
进行安装时,得到了一个注释unused arguments in layout(yaxis = ay,...
,然后我读了Hadley's article about imports
vs depends
。使用import不会删除注释,但是在NAMESPACE文件中添加plotly
和depends
可以解决此问题。
接下来,我阅读了有关“搜索路径”的段落。哈德利在这里指出
您永远不要在包中使用require()或library():相反,请使用DESCRIPTION中的Depends或Imports字段
我现在的问题是,使用plotly
的函数更多地是软件包的附加组件。所有其他(更重要的)功能都可与base-R一起使用。
因此,我只想将plotly
用于需要它的一个函数。
install
期间不创建笔记? require
或library
在包内这么糟糕? requireNamespace
然后再使用require
吗?以下是一些示例代码:
#' Some plotly function
#'
#' Some very long description
#'
#' @param x_vec A numeric vector
#' @param y_vec A numeric vector
#' @keywords Some keywords
#' @return A plotly object
#' @export
#' @examples
debugMinEx<-function(x_vec,y_vec){
ay <- list(title = "",zeroline = FALSE,showline = FALSE,
showticklabels = FALSE, showgrid = FALSE,
scaleanchor="x",scaleratio=1) ## empty axis
ax <- list(title = "",zeroline = FALSE,showline = FALSE,
showticklabels = FALSE, showgrid = FALSE) ## empty axis
my_legend<-list(font = list(family = "sans-serif", size = 14, color = "#000000"),
x = 0, y = -0.05,orientation = "h")
plot_ly() %>%
add_trace(x=x_vec,y=y_vec,
type='scatter',mode='lines') %>%
layout(yaxis = ay,xaxis=ax,
legend = my_legend)
}
答案 0 :(得分:4)
为此使用建议。
您可以在Writing R Extensions或Hadley的Package Basics: Decription中进行阅读。在这两种情况下,建议都是
Suggests
的{{1}}字段中。DESCRIPTION
来测试软件包是否在其中。 类似这样的东西:
if (requireNamespace)
关于在if (requireNamespace("plotly", quietly = TRUE)) {
# do your plotly stuff
} else {
# do non-plotly stuff
# maybe as simple as stop("Please install plotly to use this function")
}
之后是否可以使用require
-这似乎毫无意义。 Hadley的建议似乎很清楚,可以使用requireNamespace
来加载程序包,然后使用requireNamespace("plotly")
来调用所需的函数。
如果您希望忽略此建议,则只需在第一次执行plotly::
。使用require
后跟requireNamespace
是多余的。如您的链接中所述,require
装入软件包而不附加它。 requireNamespace
既加载又附加。