问题标签 [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 投票
0 回答
114 浏览

r - 导入同名函数的包时创建包的最佳实践

我在这里创建一个名为 rmetadata 的包。该软件包的目的是向学术出版物/元数据的许多数据源的OAI-PMH服务提出请求。我编写了其他包(rpmc、rdatacite 等),它们的函数名称相同,以保持一致,因为它们在每个包中执行相同的操作,但针对不同的数据源。

关于安装 rmetadata

我收到很多警告,例如

我应该怎么办?我应该重命名 rmetadata 调用的每个包中的函数吗?例如,identify 在rdryad 中变为dryad_identify,并且identify 在rdatacite 中变为datacite_identify。

或者是其他东西?

0 投票
3 回答
17663 浏览

r - 在开发 R 包中包含数据示例

我渴望学习如何将数据示例合并为写在函数上方的注释,例如:

我将我的“data.txt”文件放在目录中:/pkg_Name/inst/extdata/。但是,R CMD 检查在这一步中指示错误。如果我继续 R CMD 构建和 R CMD 安装,那么在加载包后,我无法将数据输入 R 会话......谁能告诉我出了什么问题?这是在函数帮助文档末尾包含数据示例的正确方法吗?

非常感谢!

0 投票
1 回答
563 浏览

r - 有效地将来自多个文件的源代码整合到一个文件中,包括(Roxygen)注释

问题

将源代码从多个源文件合并到单个源文件的有效方法是什么 - 包括 Roxygen 文档注释,可能还包括其他注释?

我记得有一个来自某个包的解析方法可以解释注释(将它放在某个属性“字段”中),但我再也找不到它了。


背景资料

主要出于两个原因,我喜欢将源代码从给定数量的源文件合并到单个源文件的灵活性:

  1. 为了保持清醒,我坚持“每个文件一个定义”范例,其中每个源文件都包含一个定义(函数、S4 方法、S4 参考类等)。此外,这些源文件可能存储在我的“源目录”的各个子目录中,因此甚至可能具有相同的文件名。然而,为了组合一个真正的 R 包,有时最好将多个 def 组合到一个源文件中。在重复文件名的情况下,我什至需要。
  2. 并行化时,能够将所有必需的源代码分组到一个文件中并将其推送到工作进程以便他们可以获取代码是很方便的

家庭作业

这是我目前的解决方案;感觉“还可以”,但是

  1. 我觉得可能有更好的、更有效的方法
  2. 在检测 Roxygen 代码方面似乎有点脆弱

创建示例源文件

合并功能

应用函数

所以现在有一个源文件 'src/conso/src_functions.R' 包含合并的代码

0 投票
1 回答
1580 浏览

r - 使用 roxygen2 包打包 .Rd 文件

我有一个关于使用roxygen2包为我的 R 包创建 .Rd 文件的问题。

我很清楚,为了记录 R 函数,我可以在 emacs 中使用 Cc Co 在函数上方生成注释,然后填写它们,然后是roxygenize("pkg"). 这样,我就有了 R 函数的 .Rd 文件。但是,我不确定如何获取数据示例和包本身的 .Rd 文件?目前,我正在使用prompt("data")生成data.RdpromptPackage("pkg")生成pkg-package.Rd。我必须将这些文件放入man文件夹中,然后单独编辑它们。如何以类似使用记录 R 函数的方式记录数据和打包roxygen2

非常感谢你!

0 投票
2 回答
2115 浏览

r - 使用 roxygen2 处理示例文件:反斜杠重复(\dontrun 变为 \\dontrun)

实际问题

如何避免\dontrun{在包含示例的单独文件\\dontrun{中在 roxygenizing 后变成相应的 Rd 文件?

我确实找到了一种解决方法,但感觉好像我可能只是遗漏了一些明显的东西,即roxigenize().

细节

我想我注意到一个可能的错误,或者,恕我直言,在处理存储在单独文件中的roxygen2示例时(而不是在实际的 roxygen 代码中说明它),至少是一种不良行为。

问题是\dontrun{各个示例文件\\dontrun{中的行在 roxygenizing 后变成了生成的 Rd 文件。

您将在下面找到该行为的说明以及简单的解决方法

1)确保目录

2) 使用两种不同的嵌入示例方式创建示例函数

3) 创建包骨架

4)创建单独的示例文件foo1()

5) 充氧

6) 检查包裹

R CMD 检查的截断输出表明\dontrun{in存在问题./package/test/man/foo1.Rd

7) 解决方法

这将删除 Rd 文件中所有重复的反斜杠:

8) 再次检查包裹

再次检查 R CMD 检查的截断输出。有问题的 Rd 文件现在通过了检查。当前错误是由不完整引起的./package/test/man/test-package.Rd,此时可以

0 投票
0 回答
803 浏览

r - 使用 roxygen2 记录 S4 方法:帮助文件中清楚区分方法

在你瞄准和射击之前

我知道这个问题与这篇文章密切相关。事实上,我遵循了各种答案中给出的建议,但仍然觉得生成的帮助文件有点“尴尬”,或者至少看起来有点“混杂在一起”,因此我的问题

实际问题

  1. 在记录 S4 泛型及其各自的方法时,我如何最终得到一个 Rd 文件结构,让用户清楚地区分各种方法,从而非常清楚文档的哪个部分具体属于哪个方法?
  2. 鉴于我提供了标签,在尝试获得特定@alias方法的帮助时,我该如何实际使用它们?类似的东西,而不仅仅是打字??foo-character-method?foo
  3. 最好不要在通用方法中记录 a) 签名参数,因为每个方法肯定包含各自的文档和 b) 返回值,因为这也取决于各自的方法?

现在,我觉得我最终得到了一个帮助文件,它似乎无法正确区分通用方法和各种方法 - 至少在视觉上没有。

但也许我还没有完全明白这一点;-)。在这种情况下,任何指针都将不胜感激!


这是一个可重现的示例,它生成mypkg包含 S4 泛型和两个方法的包。我尝试遵循这篇文章编写 R 扩展中给出的建议

确保目录

通用方法定义

关联方法的定义

创建包骨架

充氧

修补 Rd 文件

有些东西需要打补丁才能允许自动检查和构建过程,不需要任何手动干预,例如手动编辑 Rd 文件等。

检查包裹

构建和安装包

调查帮助文件


替代方式:构建和安装分离

0 投票
1 回答
298 浏览

r - 记录函数闭包

假设我的包中有一个函数闭包,例如

记录此功能的正确方式(在官方CRAN意义上)是什么?尤其是,

  1. 我想用roxygen2
  2. 我想提供功能的文档gh
0 投票
0 回答
70 浏览

r - RStudio 用于制作类似于 Emacs Cc Co 的 R 包文档

可能重复:
RStudio 可以自动为函数生成 roxygen 模板吗?

我使用 Emacs 开发 R 包(使用 roxygen2)并发现 Cc Co over 一个函数来生成注释非常有用。RStudio 中是否有任何类似的键绑定可以达到相同的结果,即生成

这个问题已经在这里问过了,我只是想知道这个问题是否有任何更新。谢谢!

0 投票
2 回答
2344 浏览

r - Rd file name conflict when extending a S4 method of some other package

Actual question

How do I avoid Rd file name conflicts when

  1. a S4 generic and its method(s) are not necessarily all defined in the same package (package containing (some of) the custom method(s) depends on the package containing the generic) and
  2. using roxygenize() from package roxygen2 to generate the actual Rd files?

I'm not sure if this is a roxygen2 problem or a common problem when the generic and its method(s) are scattered across packages (which IMHO in general definitely is a realistic use-case scenario if you follow a modular programming style).

What's the recommended way to handle these situations?

Illustration

In package pkga

Suppose in package pkga you defined a generic method foo and that you've provided the respective roxygen code that roxygenize() picks up to generate the Rd file:

When roxygenizing() your package, a file called foo-methods.Rd is created in the man subdirectory that serves as the reference Rd file for all methods that might be created for this generic method. So far so good. If all of the methods for this generic are also part of your package, everything's good. For example, this roxygen code would make sure that documentation is added to foo-methods.Rd for the ANY-method of foo:

However, if package pkga provides the generic for foo and you decide in some other package (say pkgb) to add a foo-method for x being of class character, then R CMD check will tell you that there is a name clash with respect to Rd file names and/or aliases (as there already exists a Rd file foo-methods.Rd in pkga):

In package pkgb

To be more precise, this is the error that's thrown/written to file 00install.out

Due dilligence

I tried to change the values for @rdname and @aliases to foo_pkgb* (instead of foo*), but \title and \name still are set to foo when roxygenizing and thus the error remains. Any ideas besides manually editing the Rd files generated by roxygenize()?


EDIT 2012-12-01

In light of starting the bounty, the actual question might get a slightly broader flavor:

How can we implement some sort of an "inter-package" check with respect to Rd files and/or how can we consolidate S4 method help files scattered across packages into one single Rd file in order to present a single source of reference to the end-user?

0 投票
1 回答
264 浏览

r - 赋值函数文档失败 R CMD CHECK

我在check使用 Roxygen 分配函数时遇到问题。

这是一个相当简单的例子:

当我运行时check

我不明白第二个value来自哪里。我已经尝试消除@param value关于 Roxygen 可能会自动为赋值函数创建一个条目的理论,但这并没有消除(x,value,value)定义并产生一个新的警告,抱怨我没有定义value

这是生成的相关部分.Rd

我没有看到声称存在的(x, value, value)签名。check

这是一个 S3 函数,但它在 S4 对象上运行。我认为这仍应使其成为 S3。但如果不是,那可能是我的使用@S3method问题。

帮助?