我的项目中有一个文件:import_packages.r,包含以下内容:
#' @import reshape2
#' @import ggplot2
#' @import DESeq2
#' @import geneplotter
#' @import survcomp
#' @import gplots
#' @import pheatmap
#' @import RColorBrewer
当我执行devtools:document()
时,这些包未显示在NAMESPACE文件中,并且实际上并未导入它们。
我做错了吗?
答案 0 :(得分:11)
如果您的文件只包含您提供的行,则roxygen2会忽略它。您应该在仅包含NULL
的roxygen代码之后添加一行。所以以下内容应该有效:
#' @import reshape2 ggplot2 DESeq2 geneplotter
#' @import survcomp gplots pheatmap RColorBrewer
NULL
我还减少了向您展示的行数,通过一次使用@import
可以导入多个包。但是对于roxygen而言,分配包裹的线数并不重要。
我认为原因是roxygen部分必须与某个R对象相关联。例如,函数的文档与相应的函数对象相关联。由于您不希望将导入与函数关联,因此您可以将它们与NULL
相关联,::
也是一个R对象。
正如hadley正确指出的那样,不建议完全导入那么多包,因为最终可能会出现名称冲突。以下两种选择通常更好:
带有显式包名称和reshape2::melt()
运算符的引用函数:@importFrom
这样可以让您立即看到函数来自哪个包。
使用#' @importFrom reshape2 melt cast
<xsl:template name="SUBREPORT_FIELDS" >
<xsl:for-each select="current()/section/@name">
<xsl:choose>
<xsl:when test="current()/section/@name = $pSectionName">
<xsl:call-template name="FieldSezione"/>
<xsl:call-template name="FIELDS"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="SUBREPORT_FIELDS"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
您可以找到更多信息here。