问题标签 [roxygen2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 你如何编写你的包文档?
我还没有完全想出一个合理的工作流程来构建包和编写他们的文档。
我希望尽可能多地自动生成流程(和文档)。
这样做的明显方法似乎是使用package.skeleton
创建基本包文件,然后以编程方式覆盖DESCRIPTION
文件和Rd
文件。这样做的问题是您会丢失自动生成的字段,这些字段确保您记得记录所有正确的参数。
我想知道你是如何构建包和编写文档的。是否有任何工具可以使该过程更容易?(roxygen看起来像是为这类事情设计的;有没有好的教程?还有其他选择吗?)
r - 是否可以/建议跳过 roxygen 以支持 roxygen2?
我最近被指向 Roxygen 来解决我的文档问题/懒惰。但是还有这个闪亮的 Roxygen2,在我的理解中,它在某种程度上是它自己的东西。Hadley 的打包工具需要使用 Roxygen2,但似乎没有太多的地方可以通过。
鉴于我在学习过程中从头开始:
对于新用户,是否有一个用例偏爱 Roxygen 而不是 Roxygen2,或者 Roxygen2 在所有方面都更好?
如果是这样,有什么资源可以学习它(最好是那些不依赖于 Roxygen 的先验知识的资源)?
Roxygen2 是否与 Roxygen 向后兼容(这样在学习和编写 Roxygen 上投入的时间会延续)?
r - 如何在不将数据集添加到“整理”字段的情况下记录数据集?
我roxygen2
用来记录我正在开发的包的数据集。我知道您可以使用 roxygen 来记录数据集,但Shane 的回答最终暗示了一个 hack,虽然我宁愿避免这样做。所以,我的问题是:
我应该将 roxygen 文档放在哪里?
我目前在我的 /R 文件夹中anorexia.sub.roxygen
有一个厌食症数据集的数据文档文件 ( )
因为据我所知,这是 roxygen2 唯一会寻找它的地方:
roxygen2
生成文档就好了。但是,然后它anorexia.sub.roxygen.R
添加到我的Collate
领域DESCRIPTION
:
我想我的问题是:我怎样才能拥有 roxygen2
- 自动从 roxygen 块生成数据文档,
- 不要将数据文档文件添加到
Collate
调用中,并且 - 避免需要破解的解决方案
r - 如何消除有关“未找到名称...”的 Roxygen 警告?
我正在使用参数 use.Rd2 = TRUE 调用 roxygenize()。我有一个文件 testcase.R,我在其中使用 R.oo 创建了一个简单的 S3 对象。这是文件的内容。roxygen 在这里没有什么可做的,它应该忽略以下内容:
这是错误:
如何消除警告?根据其他帖子中的建议,我在第一行添加了以下内容,但它不起作用:
r - Roxygen2 - 如何正确记录 S3 方法
我已经阅读了 Roxygen2 PDF 和这个站点,我对 @method @S3method @export 之间的区别以及如何使用它们来正确记录 S3 方法感到迷茫。我制定了以下示例进行讨论:
我将如何正确记录这些?
如何模拟 ?print 和其他通用函数的文档,这些函数显示所有特定于类的实现的用例(即 ?print 显示“因子”、“表”、“函数”的用法的方式)
从 wiki 页面:“所有导出的方法都需要 @S3method 标记。它与@method 具有相同的格式。这会导出方法,而不是函数 - 即 generic(myobject) 将起作用,但 generic.mymethod(myobject) 不会。”
我无法解释这一点。这似乎是说如果标签指定不正确,函数/方法调用将无法正常工作?具体会破什么?MyHappyFunction = function( x , ... ) { UseMethod( "MyHappyFunction" ) }
MyHappyFunction.lm = 函数( x , ... ) {
做一些魔术
}
r - 使用 Roxygen 记录 R.oo 类/方法
有人能指出一个用 Roxygen 记录 R.oo 类/方法的好例子吗?在 R.oo 中,类/方法是通过调用 setConstructorS3() 和 setMethodS3() 创建的,因此本身没有记录功能。您是否只是创建标准 Roxygen 函数文档,但将其放在 NULL 语句之上?
r - 如何使用 roxygen2 正确记录 S4 方法
我在 SO 和其他地方看到了一些关于在 Roxygen2 的未来版本中应该或将如何完成的讨论。但是,我被困住了。我应该如何使用 Roxygen2 记录 S4 泛型及其方法?全新泛型/方法的工作示例以及扩展基本 S4 泛型的示例将非常有用。我不想为相同泛型的每个 S4 方法制作单独的(大部分)冗余文档。
尽职调查:我找到了“提取”方法的一个有用示例。但是,对于我的问题,它似乎已经过时且不完整。它在类文档中使用 @slot 标记,该标记不再(不再?)支持。它仅显示核心 S4 方法“[”的扩展,而不是包含 S4 泛型文档的完整 Roxygen 示例。
如何使用 roxygen 正确记录 S4“[”和“[<-”方法?
如果我用 title、description 完整记录一个新的 S4 泛型,@param @return @name @aliases
@docType @rdname
然后只用相应的 记录 S4 方法@name @aliases
@docType @rdname
,我会收到以下R CMD check
警告:
乍一看,好像我用 roxygen2 以这种方式记录的 S4 方法都没有真正起作用。然而,到目前为止,我注意到我对核心方法“show”的扩展没有相关的错误,即使它们的记录方式与其他方法完全相同。这是我在其中一种显示方法上方包含的完整 roxygen 文档的示例,它没有生成缺少文档的错误:
因此,我不知所措。如您所见,我已经包含了R 包手册的 S4 文档部分中描述的 S4 方法的别名约定,即方法应该有一个具有以下名称的别名(不含空格):
不知何故,这并没有被完全理解R CMD check
。
最后,在使用以下命令构建文档后:
并构建包,我得到了功能文档。特定方法文档中的任何标题都会出现在“描述”字段中,相当尴尬。所以 roxygen2 显然对每个方法的文档做了一些事情,并且走上了正确的轨道。然而,仅仅避免一个大而令人不安的警告是不够的
我查看了 Rd 文件,但我对它们的了解更少,无法快速了解问题所在,而且我无论如何都想知道 roxygen2 解决方案,这样我就不必在每次文档修订后直接操作 Rd 文件。
所以这是一个多部分的问题:
roxygen2 的 S4 通用和 S4 方法文档的当前推荐方法是什么?
是否有一个很好的例子可以显示完整的细节?
大多数 S4 方法的文档丢失的警告可能是什么原因和解决方案(即使具有“缺少”文档的方法实际上已经由 roxygen2 解析了它们的文档,并且生成的 Rd 文件至少足以工作在包后
R CMD build mypkgname
)?
class - 如何使用 Roxygen2 正确记录 S4 类插槽?
对于使用 roxygen(2) 记录类,指定标题和描述/细节似乎与函数、方法、数据等相同。但是,插槽和继承是它们自己的一种动物。在 roxygen2 中记录 S4 类的最佳实践是什么(当前的或计划的)?
尽职调查:
我发现@slot
在 roxygen 的早期描述中提到了一个标签。
一个 2008 R-forge 邮件列表帖子
似乎表明这已经死了,并且@slot
在 roxygen 中不支持:
roxygen2 是这样吗?前面提到的帖子建议用户应该使用 LaTeX 标记制作自己的逐项列表。例如,扩展该类的新 S4 类"character"
将被编码和记录如下:
然而,尽管这可行,但这种记录插槽\describe
的\item
方法似乎与 roxygen(2) 的其余部分不一致,因为没有- 分隔的@
标签,并且插槽可能会在roxygenize()
. 它也没有说明记录正在定义的类的继承的一致方式。@import
我想依赖通常仍然可以使用标签正常工作(如果特定插槽需要来自另一个包的非基类) 。
那么,总而言之,roxygen(2) 插槽的当前最佳实践是什么?
目前似乎有三个选项需要考虑:
- A -- 分项清单(如上例)。
- B -
@slot
...但我错过了额外的标签/实现。我无法让@slot 与 roxygen / roxygen2 在上面示例中作为逐项列表的替代品的版本中使用。同样,上面的示例确实适用于 roxygen(2)。- C - 一些用于指定插槽的替代标签,例如
@param
,可以完成同样的事情。
我正在从我在githubroxygen2
上的开发页面上发表的帖子中借用/扩展这个问题。
r - roxygen2“错误:标题需要一个值”
我收到一个roxygenize()
我无法理解的错误。我有一个杂项函数包,其中 .Rd 文件是通过 roxygen 生成的。
错误是Error: titlerequires a value
,这表明没有@title
标签。但是文件中有一个@title
标签kmmisc-package.R
,所以我不确定问题是什么。
kmmisc-package.R
包含:
我正在使用 R 2.13.2 和刚刚从 CRAN 重新安装的 roxygen2 2.1。完整sessionInfo()
的要点在https://gist.github.com/1268056
编辑
在@andrie 的建议下,我现在有了
这仍然会产生相同的错误。
r - 使用 Roxygen 记录 setAs() 和 setOldClass()
我正在开发一个提供名为“Foo”的 S3 类的包。它还提供了一种“as”方法,用于将其强制为(其他人的)名为“Bar”的 S4 类。我的代码如下所示:
编辑我试过这个:
但后来我从 R CMD CHECK 得到这个:
检查名称空间是否可以加载声明的依赖项...警告 namespaceExport(ns,exports) 中的错误:未定义的导出:as 调用:loadNamespace -> namespaceExport 执行暂停
命名空间必须能够只加载基本命名空间:否则如果命名空间被保存的对象加载,会话将无法启动。
可能需要在 NAMESPACE 文件中声明一些导入。
在一个单独的 .R 文件中,我有:
我正在使用 hadley 的 devtools 包,所以我猜它是 roxygen2。这就是我所做的: