- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何避免 Rd 文件名冲突
roxygenize()
从包装 roxygen2生成实际的 Rd 文件?我不确定这是否是roxygen2
当泛型及其方法分散在包中时的问题或常见问题(恕我直言,如果您遵循模块化编程风格,那么通常绝对是一个现实的用例场景)。
处理这些情况的建议方法是什么?
包装内 pkga
假设在包中 pkga
您定义了一个通用方法 foo
并且您已提供相应的 roxygen 代码 roxygenize()
拾取生成Rd文件:
#' Test function
#'
#' Test function.
#'
#' @param ... Further arguments.
#' @author Janko Thyson \email{janko.thyson@@rappster.de}
#' @example inst/examples/foo.R
#' @docType methods
#' @rdname foo-methods
#' @export
setGeneric(
name="foo",
signature=c("x"),
def=function(
x,
...
) {
standardGeneric("xFoo")
}
)
何时 roxygenizing()
你的包,一个名为 foo-methods.Rd
的文件创建于 man
子目录,用作可能为此通用方法创建的所有方法的引用 Rd 文件。到目前为止,一切都很好。如果该泛型的所有方法也是您的包的一部分,那么一切都很好。例如,此 roxygen 代码将确保将文档添加到 foo-methods.Rd
对于ANY
-foo
的方法:
#' @param x \code{ANY}.
#' @return \code{TRUE}.
#' @rdname foo-methods
#' @aliases foo,ANY-method
#' @export
setMethod(
f="foo",
signature=signature(x="ANY"),
definition=cmpfun(function(
x,
...
) {
return(TRUE)
}, options=list(suppressAll=TRUE))
)
但是,如果包pkga
提供 foo
的通用并且您决定在其他某个包(例如 pkgb
)中添加 foo
-x
的方法属于类(class)character
,然后R CMD check
会告诉您 Rd 文件名和/或别名存在名称冲突(因为 foo-methods.Rd
中已存在 Rd 文件 pkga
):
包装内 pkgb
#' @param x \code{character}.
#' @return \code{character}.
#' @rdname foo-methods
#' @aliases foo,character-method
#' @export
setMethod(
f="foo",
signature=signature(x="character"),
definition=cmpfun(function(
x,
...
) {
return(x)
}, options=list(suppressAll=TRUE))
)
更准确地说,这是抛出/写入文件 00install.out
的错误
Error : Q:/pkgb/man/foo-methods.Rd: Sections \title, and \name must exist and be unique in Rd files
ERROR: installing Rd objects failed for package 'pkgb'
我尝试更改 @rdname
的值和@aliases
至foo_pkgb*
(而不是 foo*
),但是 \title
和\name
仍然设置为foo
当氧合时,错误仍然存在。 除了手动编辑 Rd 文件由 roxygenize()
生成的任何想法?
鉴于开始赏金,实际问题可能会变得更广泛:
我们如何实现某种针对 Rd 文件的“包间”检查和/或如何将分散在包中的 S4 方法帮助文件合并到一个 Rd 文件中,以便呈现一个单一的 Rd 文件最终用户的引用来源?
最佳答案
基本问题确实只是“roxygenize”。这就是为什么我从未见过这个问题。
虽然封装开发采用氧化方法有充分的理由,我仍然认为有一个很好的理由不去那里:
生成的帮助页面往往看起来极其无聊,不仅是自动生成的 *.Rd 文件,还有渲染的结果。例如
这是为什么呢?因为
1) 阅读和编辑 roxygen 评论的意义远不止于此 “麻烦”或至少在视觉上没有返回 与在 ESS 或 Rstudio 或(其他内置 *.Rd 支持的 IDE)中读取和编辑 *.Rd 文件相比
2) 如果您使用该文档
is the thing that's automatically generated at the end of your package building/checking
您通常不认为写得好的 R 文档很重要(而是你的 R 代码,所有文档都只是一条注释:-)
所有这些的结果是:人们更喜欢在小插图甚至博客、github 要点、youtube 视频等中编写有关其功能的文档,在编写时非常好,但几乎脱离了代码,注定会过时和枯萎(因此,通过谷歌搜索误导你的用户) --> roxygen 将代码和文档放在同一个地方的最初动机完全被击败了。
我喜欢 roxygen,并在创建新函数时广泛使用它......只要我的函数不在包中,或未导出,我就会保留并维护它。一旦我决定导出它,我运行(相当于 ESS 的)roxygenize() 一次从那时起,承担维护一个格式良好的 *.Rd 文件的额外小负担,该文件包含自己的注释(对于我作为作者而言),有许多不错的示例,有自己的修订控制( git/svn/...)历史记录等
关于扩展其他包的 S4 方法时 Rd 文件名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137912/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!