此功能可以单独正常运行。在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)
“进口来源”我缺少什么?还是这是View
或rlang
问题?
答案 0 :(得分:1)
事实证明,devtools :: check()错误是在sqlpetr.Rcheck文件夹中某个鬼的地方,它在包目录的下一个目录中创建。发出该错误消息后,即使我纠正了问题,它也不会消失。删除该目录后,错误消息消失了。
答案 1 :(得分:0)
您必须在 Imports (或 Depends )中包含 rlang 软件包(但如果我没记错的话,建议的部分是导入)中的 DESCRIPTION 文件。
不幸的是,该函数中的“ importFrom rlang enexprs ”是正确的-除了NAMESPACE文件外-Description文件不会自动更新,因此您必须包括所有用说明文件中> importFrom 。