我最近被指向Roxygen解决我的文档困境/懒惰.但是在这个闪亮的Roxygen2中,根据我的理解,它有点像它自己的东西.Hadley的包装工具需要使用Roxygen2,但在任何地方都没有通过走路的方式.
鉴于我在学习过程中从头开始:
是否有一个用户,对于新用户,有利于Roxygen而不是Roxygen2,或者Roxygen2在所有方面都更好?
如果有的话,有哪些资源用于学习(最好是那些不依赖于Roxygen先前知识的资源)?
Roxygen2是否与Roxygen向后兼容(这样投入学习和写作Roxygen的时间会延续下去)?
我正在使用roxygen创建自己的包.我有一个导致问题的功能:
##' extract.sig.metadata
##' @param foo bar
##' @author me
##' @export
extract.sig.metadata <- function(foo){
# does stuff
}
Run Code Online (Sandbox Code Playgroud)
我已经创建了我的包骨架(使用devtools的create(my-package)),并且我使用了document()来处理roxygen标签.但是,当我尝试安装我的软件包时,它会失败:
... *安装帮助索引**构建软件包索引**测试是否可以加载已安装的软件包错误:加载命名空间'my-package'时找不到对象'extract'错误:加载失败执行停止
我很确定roxygen认为extract.sig.metadata是一个S3方法,即一种特殊形式的export(),但它没有找到函数export(),所以它正在破坏.但这不是一个s3方法,它只是一个名为extract.sig.metadata的函数.如果我查看Rd代码,/ usage标记看起来很奇怪:
\usage{
\method{extract}{sig.metadata}(spec.df, var = "product_name",
ratio.cutoff = 0.001, prob.modifer = 3, frequency.cutoff = NA,
verbose = F, assign.to.global.env = FALSE, use.bigrams = T, clean = T,
ngram.dupe.n.cutoff = 0.1, max.obs = 10000)
}
Run Code Online (Sandbox Code Playgroud)
如果我确实将名称更改为extractSigMetadata,则问题在技术上已得到修复,并且.Rd代码会更改,
\usage{
extractSigMetadata(foo)
}
Run Code Online (Sandbox Code Playgroud)
但我真的不想改变我的函数的名称(我的包中有几十个函数有相同的问题,并且它们被用在一堆脚本中 - 改变我的命名将是一个巨大的痛苦架构不).
--->有谁知道我怎么能告诉roxygen这只是一个正常的函数而不是奇怪的s3方法?我猜它与@method标签有关,但我不知道如何正确使用它来使这项工作.谢谢!!!
我正在roxygen2用于记录我正在开发的包的数据集.我知道你可以使用roxygen来记录数据集,但Shane的回答最终暗示了一个hack,而我宁愿避免.所以,我的问题是:
我目前有一个数据文档文件(anorexia.sub.roxygen)用于我/ R文件夹中的厌食症数据集

因为据我所知,这是roxygen2寻找它的唯一地方:
#' Family Treatment Weight change data for young female anorexia patients.
#'
#'
#' The MASS package includes the dataset \code{anorexia}, containing pre and
#' post treatment weights for young female anorexia patients. This is a subset
#' of those data, containing only those patients who received Family Treatment.
#'
#'
#' @name anorexia.sub
#' @docType data
#' @format A dataframe with 17 observations on …Run Code Online (Sandbox Code Playgroud) 例如,假设我有以下包调用Test,我想导出类A:
# In /R/Test.R:
#' @docType package
#' @import methods
#' @exportClass A
A <- setRefClass("A", methods = list(foo = identity))
Run Code Online (Sandbox Code Playgroud)
但是,在构建和加载后,使用A的生成器时出现以下错误:
> library(Test)
> A()$foo(1)
Error: could not find function "A"
Run Code Online (Sandbox Code Playgroud)
我检查过我的NAMESPACE文件内容很好:
exportClasses(A)
import(methods)
Run Code Online (Sandbox Code Playgroud)
出了什么问题?为什么不导出我的类生成器?
我的项目中有一个文件:import_packages.r,包含以下内容:
#' @import reshape2
#' @import ggplot2
#' @import DESeq2
#' @import geneplotter
#' @import survcomp
#' @import gplots
#' @import pheatmap
#' @import RColorBrewer
Run Code Online (Sandbox Code Playgroud)
当我这样做时,devtools:document()这些包不会显示在NAMESPACE文件中,并且实际上并未导入它们.难道我做错了什么?
我刚刚开始玩这个roxygen包,到目前为止我对结果非常满意.但是我想知道,有没有办法指明roxygen它应该忽略某些用户无法访问的功能?
具体来说,我宁愿没有.Rd弹出文件,因为我.onLoad()在我的包中使用了钩子.此功能已在base包中记录,因此我没有理由重新记录它.
我刚尝试了Roxygen包.在R中,我可以浏览Roxygen Vignette中的示例.但是在命令行中,R CMD roxygen不会将其识别为有效命令.当我跑步时R CMD --help,我可以看到所有的INSTALL, check, ...sweave..., config...命令项而不是roxygen.任何人都可以帮助我吗?除了需要额外的安装步骤install.packages("roxygen")吗?我使用带有R 2.12.0的Windows 32和工作Rtools环境.谢谢.
我正在重构一个导入许多其他包的完整命名空间的包。我相信这些依赖项中的许多用于单个函数调用用途,使用 importFrom 可以更好地处理它们,或者是不再使用的孤立依赖项。
包中有足够的代码,手动检查每一行寻找不熟悉的函数调用会很乏味。
如何确定在包中使用导入的命名空间中的对象的位置和次数?请注意,这个包不包括单元测试。
这是一个可重现的示例:
DESCRIPTION 文件:
Package: my_package
Title: title
Version: 0.0.1
Authors@R: person(
given = "A",
family = "Person",
role = c("aut", "cre"),
email = "person@company.com"
)
Description: Something
License: Some license
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.1.1
Imports:
dplyr,
purrr,
stringr
Run Code Online (Sandbox Code Playgroud)
NAMESPACE 文件:
import(dplyr)
import(purrr)
import(stringr)
Run Code Online (Sandbox Code Playgroud)
my_package.R 文件:
#' my_package
#' @docType package
#' @name my_package
NULL
#' @import dplyr
#' @import purrr
#' @import stringr
NULL
Run Code Online (Sandbox Code Playgroud)
functions.R 文件
#' add 1 to "banana" column and …Run Code Online (Sandbox Code Playgroud) 假设我想链接到我的文档的"详细信息"部分以获取功能foo,我该怎么办? \link{foo:Details}似乎不起作用,那么正确的命令是什么?