Таинственная зависимость пространства имен не требуется:: rlang ’ - PullRequest
0 голосов
/ 30 октября 2018

Эта функция сама по себе работает правильно. При выполнении в 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 - все приводят к одному и тому же сообщению об ошибке, когда я devtools::check() в R Studio:

❯ 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)

Чего мне не хватает в "импорте из"? Или это View или rlang проблема?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Оказывается, что ошибка devtools :: check () была призраком где-то в папке sqlpetr.Rcheck, которую она создает по соседству с каталогом пакета. После выдачи этого сообщения об ошибке оно не исчезнет даже после того, как я исправлю проблему. Как только я удалил этот каталог, сообщение об ошибке исчезло.

0 голосов
/ 30 октября 2018

Вы должны включить пакет rlang в раздел Imports (или Зависит от , но, если я правильно помню, рекомендуемый раздел - Imports ) вашего ОПИСАНИЯ файла.

« importFrom rlang enexprs » в функции корректно, к сожалению - кроме файла NAMESPACE - файл DESCRIPTION не обновляется автоматически, поэтому вам необходимо включить все пакеты, которые вы перечислили с importFrom в файле Description вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...