Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:roxygen2,导入的包不会出现在命名空间中_R_Roxygen2_Roxygen - Fatal编程技术网

R:roxygen2,导入的包不会出现在命名空间中

R:roxygen2,导入的包不会出现在命名空间中,r,roxygen2,roxygen,R,Roxygen2,Roxygen,我的项目中有一个文件:import_packages.r,包含以下内容: #' @import reshape2 #' @import ggplot2 #' @import DESeq2 #' @import geneplotter #' @import survcomp #' @import gplots #' @import pheatmap #' @import RColorBrewer 当我执行devtools:document()时,这些包不会显示在名称空间文件中,实际上也不会导入。

我的项目中有一个文件:import_packages.r,包含以下内容:

#' @import reshape2
#' @import ggplot2
#' @import DESeq2
#' @import geneplotter
#' @import survcomp
#' @import gplots
#' @import pheatmap
#' @import RColorBrewer
当我执行
devtools:document()
时,这些包不会显示在名称空间文件中,实际上也不会导入。
我做错了什么吗?

如果您的文件只包含您提供的行,那么roxygen2会忽略它。您应该在roxygen代码后添加一行,该行只包含
NULL
。因此,以下措施应该有效:

#' @import reshape2 ggplot2 DESeq2 geneplotter
#' @import survcomp gplots pheatmap RColorBrewer
NULL
我还减少了行数,向您展示了如何一次使用
@import
导入几个包。但是对于roxygen来说,你在多少条线上分发软件包并不重要

我认为这是因为roxygen截面必须与某个R物体相关联。例如,函数的文档与相应的函数对象相关联。由于您不希望将导入与函数关联,因此可以将它们与
NULL
关联,后者也是一个R对象

正如正确指出的,不建议完全导入那么多包,因为最终可能会出现名称冲突。以下两种选择通常更好:

  • 带有显式包名和
    运算符的引用函数:
    重塑2::melt()
    这有一个额外的优点,您可以立即看到函数来自哪个包

  • 使用
    @importFrom
    ,仅从软件包中导入所需的函数:

    #' @importFrom reshape2 melt cast
    

您可以找到更多信息。

有时删除
名称空间
文件有助于重新创建该文件。@drmariod没有帮助。这些包仍然没有出现在名称空间中。值得注意的是,完全导入许多包不是推荐的做法。@hadley感谢您的输入。稍后我将补充几句关于更好实践的话。