不需要神秘的名称空间依赖项:“ rlang”

时间:2018-10-30 17:52:24

标签: r

此功能可以单独正常运行。在R Studio中执行时,它将打开View函数,并且该窗口正确地标记为mtcars(不是df):

#' Print a data frame appropriate to output type
#'
#' @param df the data frame to be printed
#'
#' @return either kable (in PDF) or datatable (in HTML) output
#' @importFrom DT datatable
#' @importFrom knitr kable
#' @importFrom utils View
#' @importFrom rlang enexprs
#' @export
#'
#' @examples # sp_print_df(df)
sp_print_df <- function(df){
  df_name <- enexprs(df)
  if (knitr::is_latex_output()) {
    knitr::kable(df)(df)
  }
  else if (knitr::is_html_output()) {
    DT::datatable(df)
  }
  else {
    View(df, title = as.character(df_name[[1]]))
    }
  }
library(rlang)
sp_print_df(mtcars)

我在软件包(https://github.com/smithjd/sqlpetr)中包含此功能时遇到了一些问题。

@importFrom文件中的.R和包rlang (>= 0.3.0.1),文件中的DESCRIPTION的各种排列(作为Imports:Suggests当我在R Studio中执行devtools::check()时,所有这些都会导致相同的错误消息:

❯ checking package dependencies ... ERROR
  Namespace dependency not required: ‘rlang’

  See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’
  manual.

1 error ✖ | 0 warnings ✔ | 0 notes ✔
Error: R CMD check found ERRORs
Execution halted

Exited with status 1.

据我所知,roxygen包正在适当地生成NAMESPACE文件(这是一个片段):

importFrom(purrr,map_chr)
importFrom(rlang,enexprs)
importFrom(stringr,str_detect)
importFrom(tibble,as_tibble)

“进口来源”我缺少什么?还是这是Viewrlang问题?

2 个答案:

答案 0 :(得分:1)

事实证明,devtools :: check()错误是在sqlpetr.Rcheck文件夹中某个鬼的地方,它在包目录的下一个目录中创建。发出该错误消息后,即使我纠正了问题,它也不会消失。删除该目录后,错误消息消失了。

答案 1 :(得分:0)

您必须在 Imports (或 Depends )中包含 rlang 软件包(但如果我没记错的话,建议的部分是导入)中的 DESCRIPTION 文件。

不幸的是,该函数中的“ importFrom rlang enexprs ”是正确的-除了NAMESPACE文件外-Description文件不会自动更新,因此您必须包括所有用说明文件中> importFrom 。