问题标签 [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.

0 投票
2 回答
5066 浏览

r - 你如何编写你的包文档?

我还没有完全想出一个合理的工作流程来构建包和编写他们的文档。

我希望尽可能多地自动生成流程(和文档)。

这样做的明显方法似乎是使用package.skeleton创建基本包文件,然后以编程方式覆盖DESCRIPTION文件和Rd文件。这样做的问题是您会丢失自动生成的字段,这些字段确保您记得记录所有正确的参数。

我想知道是如何构建包和编写文档的。是否有任何工具可以使该过程更容易?(roxygen看起来像是为这类事情设计的;有没有好的教程?还有其他选择吗?)

0 投票
2 回答
1082 浏览

r - 是否可以/建议跳过 roxygen 以支持 roxygen2?

我最近被指向 Roxygen 来解决我的文档问题/懒惰。但是还有这个闪亮的 Roxygen2,在我的理解中,它在某种程度上是它自己的东西。Hadley 的打包工具需要使用 Roxygen2,但似乎没有太多的地方可以通过。

鉴于我在学习过程中从头开始:

  1. 对于新用户,是否有一个用例偏爱 Roxygen 而不是 Roxygen2,或者 Roxygen2 在所有方面都更好?

  2. 如果是这样,有什么资源可以学习它(最好是那些不依赖于 Roxygen 的先验知识的资源)?

  3. Roxygen2 是否与 Roxygen 向后兼容(这样在学习和编写 Roxygen 上投入的时间会延续)?

0 投票
1 回答
1457 浏览

r - 如何在不将数据集添加到“整理”字段的情况下记录数据集?

roxygen2用来记录我正在开发的包的数据集。我知道您可以使用 roxygen 来记录数据集,但Shane 的回答最终暗示了一个 hack,虽然我宁愿避免这样做。所以,我的问题是:

我应该将 roxygen 文档放在哪里?

我目前在我的 /R 文件夹中anorexia.sub.roxygen有一个厌食症数据集的数据文档文件 ( )

我的包裹目录

因为据我所知,这是 roxygen2 唯一会寻找它的地方:

roxygen2生成文档就好了。但是,然后它anorexia.sub.roxygen.R添加到我的Collate领域DESCRIPTION

我想我的问题是:我怎样才能拥有 roxygen2

  1. 自动从 roxygen 块生成数据文档,
  2. 不要将数据文档文件添加到Collate调用中,并且
  3. 避免需要破解的解决方案
0 投票
1 回答
259 浏览

r - 如何消除有关“未找到名称...”的 Roxygen 警告?

我正在使用参数 use.Rd2 = TRUE 调用 roxygenize()。我有一个文件 testcase.R,我在其中使用 R.oo 创建了一个简单的 S3 对象。这是文件的内容。roxygen 在这里没有什么可做的,它应该忽略以下内容:

这是错误:

如何消除警告?根据其他帖子中的建议,我在第一行添加了以下内容,但它不起作用:

0 投票
2 回答
13230 浏览

r - Roxygen2 - 如何正确记录 S3 方法

我已经阅读了 Roxygen2 PDF 和这个站点,我对 @method @S3method @export 之间的区别以及如何使用它们来正确记录 S3 方法感到迷茫。我制定了以下示例进行讨论:

  1. 我将如何正确记录这些?

  2. 如何模拟 ?print 和其他通用函数的文档,这些函数显示所有特定于类的实现的用例(即 ?print 显示“因子”、“表”、“函数”的用法的方式)

  3. 从 wiki 页面:“所有导出的方法都需要 @S3method 标记。它与@method 具有相同的格式。这会导出方法,而不是函数 - 即 generic(myobject) 将起作用,但 generic.mymethod(myobject) 不会。”
    我无法解释这一点。这似乎是说如果标签指定不正确,函数/方法调用将无法正常工作?具体会破什么?

    MyHappyFunction = function( x , ... ) { UseMethod( "MyHappyFunction" ) }

    MyHappyFunction.lm = 函数( x , ... ) {

    做一些魔术

    }

0 投票
2 回答
318 浏览

r - 使用 Roxygen 记录 R.oo 类/方法

有人能指出一个用 Roxygen 记录 R.oo 类/方法的好例子吗?在 R.oo 中,类/方法是通过调用 setConstructorS3() 和 setMethodS3() 创建的,因此本身没有记录功能。您是否只是创建标准 Roxygen 函数文档,但将其放在 NULL 语句之上?

0 投票
2 回答
10444 浏览

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 文件。

所以这是一个多部分的问题:

  1. roxygen2 的 S4 通用和 S4 方法文档的当前推荐方法是什么?

  2. 是否有一个很好的例子可以显示完整的细节?

  3. 大多数 S4 方法的文档丢失的警告可能是什么原因和解决方案(即使具有“缺少”文档的方法实际上已经由 roxygen2 解析了它们的文档,并且生成的 Rd 文件至少足以工作在包后R CMD build mypkgname)?

0 投票
3 回答
14061 浏览

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上的开发页面上发表的帖子中借用/扩展这个问题。

0 投票
2 回答
915 浏览

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 的建议下,我现在有了

这仍然会产生相同的错误。

0 投票
1 回答
1119 浏览

r - 使用 Roxygen 记录 setAs() 和 setOldClass()

我正在开发一个提供名为“Foo”的 S3 类的包。它还提供了一种“as”方法,用于将其强制为(其他人的)名为“Bar”的 S4 类。我的代码如下所示:

编辑我试过这个:

但后来我从 R CMD CHECK 得到这个:

检查名称空间是否可以加载声明的依赖项...警告 namespaceExport(ns,exports) 中的错误:未定义的导出:as 调用:loadNamespace -> namespaceExport 执行暂停

命名空间必须能够只加载基本命名空间:否则如果命名空间被保存的对象加载,会话将无法启动。

可能需要在 NAMESPACE 文件中声明一些导入。

在一个单独的 .R 文件中,我有:

我正在使用 hadley 的 devtools 包,所以我猜它是 roxygen2。这就是我所做的: