【发布时间】:2019-06-05 11:02:13
【问题描述】:
我正在创建一个包含一些功能的包。只有一个辅助功能需要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)
}
【问题讨论】:
-
您可能希望使用
Suggests而不是Imports:cran.r-project.org/doc/manuals/r-release/… -
所以最佳实践是使用
Suggests和例如在requireNamespace-if 子句中使用plotly::plot_ly函数?调用plotly::不会使函数变慢吗?还是我的记忆出卖了我:P -
每个函数调用,即使是
::,都有开销,可能在微秒级。如果您在循环中运行此函数数百万次,您会注意到一两秒的差异。但我的猜测是你不会产生数百万的情节...... -
if子句的开销大于::的开销。我不会将这种结构用于性能关键的功能。
标签: r plotly devtools roxygen2