问题标签 [roxygen]

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 投票
1 回答
1241 浏览

r - 如何在 R 帮助文件/roxygen2 中交叉引用方程

我正在为我正在制作的 R 包记录我的一些功能。

我正在使用 roxygen 标记,尽管这在很大程度上与我的问题无关。

我已经将方程式放入我的文档中,使用\deqn{...}. 我的问题是: 以后有没有办法交叉引用这个等式?

例如,在我的 Rd 文件中:

我以后可以做类似的事情吗:

参考方程 \ref{test}, ...

我试过了\eqref{test}\ref{test}(它们都得到“未知宏”并且没有得到链接),而且\link{test}(它抱怨它找不到函数test,因为它实际上只是为了链接到其他函数)。

否则我担心我可能不得不做一些hacky并在Rd文件的etc中手动-- (1)添加和...Refer to equation (1) \deqn

更新

一般的答案似乎是“不”。(哇……)

但是,我可以写一个小插图并在那里使用“普通”乳胶/包。无论如何,我刚刚注意到我花了很长时间放入我的 roxygen/Rd 文件的矩阵方程?myFunction在帮助版本中看起来很糟糕(它们显示为几乎字面的乳胶源)。真可惜,因为它们在 pdf 版本的帮助中看起来很漂亮。

@Iterator 指出了条件文本的存在,所以我将在 .Rd 文件中进行 ASCII 数学运算,但在 pdf 手册/插图中进行乳胶数学运算。

0 投票
1 回答
180 浏览

r - roxygen2 + cygwin + 默认参数 = 截断的 `\usage` 部分

我有一个我一直在 Linux 下开发的 R 包,我在 Windows 下测试它的可怕时刻已经到来。

文档是使用 roxygen 完成的,我正在使用 cygwin 构建包。

问题是,当 I 时roxygenise('test-package'),roxygen 将\usage文档的部分截断为一个字符。它对我的一些但不是全部功能执行此操作,我无法弄清楚模式。

在 Linux 或 Windows 下运行相同的命令(即从 R 提示符)时不会发生这种情况roxygenise('test-package')- 只是 Windows 下的 Cygwin(使用 R devtools + Windows 的命令提示符对我来说不是一个选项 - 它是 Makefiles 大项目的一部分ETC)。

在所有情况下,我都使用 roxygen v2.2.2。


更新:

这似乎发生在任何具有默认参数的函数上。


我把它归结为一个可重现的例子,尽可能地精简以隔离问题:

  1. 来自 R:

    /li>
  2. 修改trim.R(在 test/R 中)并将以下 roxygen 添加到顶部,因此文件如下所示:

    /li>
  3. 运行 R 并生成文档:

    /li>
  4. 查看生成的trim.Rd文件(在 test/man 中):

    /li>

看看怎么只有一个\usage{t}??

当然,当一个人运行时,R CMD check会收到一个关于没有出现在文档中的参数的错误\usage,但那是因为\usage被截断了。

有谁知道为什么会发生这种情况以及我该如何解决?也许其中的某些东西roxygen2依赖于适用于 Mac、Windows 和 Linux 但不适用于 Cygwin 的东西?

干杯(我一直在为此扯头发)。

更新#2:

我一直在使用从 Cygwin 的包管理器安装的 R,而不是我的 Windows R(即 中的那个C:/Program Files/R/R-2.14.2/bin)——我没有意识到 Windows R 可以在 Cygwin 下工作。

如果我在 Cygwin 中使用 Windows R,错误就会消失。如果我在 Cygwin 中使用 Cygwin R,则存在该错误。

我只能假设这是一些与 Cygwin R 相关的错误,而不是 roxygen2。

现在我将使用在 cygwin 中使用 Windows R 的解决方法(事实上,现在我知道我可以做到这一点,无论如何都不需要 Cygwin R!)。

0 投票
1 回答
1802 浏览

r - install_github 返回错误:无法打开 zip 文件

当我运行以下命令时:

我收到以下错误:

使用开发工具 0.51:

我安装了 devtools 的更新版本(0.6):install_github('devtools')

并且错误信息更多,但类似:

难道我做错了什么?


0 投票
4 回答
2511 浏览

r - 在新版本的包中重命名函数时是否有最佳/推荐的做法?

我正在更新一个旧包并缩短一堆非常长的函数名称。如何让用户知道旧功能已被弃用?我记录了所有内容,roxygen2所以我想知道#' @alias我应该使用什么?想法?

0 投票
2 回答
8830 浏览

r - 在编写自己的 R 包时,我似乎无法正确导入其他包

好吧,第一次尝试编写 R 包,我被卡住了。这是我创建包的方式:

我正在使用 roxygen2 并在我的“pkg-package.R”文件中有以下导入:

然后从终端运行:

在检查阶段,我收到以下警告:

** 为延迟加载准备包
警告:加载“lubridate”时替换之前的导入“小时”<br> 警告:加载“lubridate”时替换之前的导入“mday”<br> 警告:加载“时”替换之前的导入“月” lubridate'<br> 警告:加载 'lubridate' 时替换之前的导入 'wday'<br> 警告:加载 'lubridate' 时替换之前的导入 'week'
警告:加载 'lubridate' 时替换之前的导入 'yday'<br>警告:在加载“lubridate”时替换之前的导入“年份”<br> ** 帮助
*安装帮助索引
** 构建包索引 ...
** 测试是否可以加载已安装的包
警告消息:
1:加载“lubridate”时替换之前的导入“小时”<br> 2:加载“lubridate”时替换之前的导入“mday”<br> 3:加载“lubridate”时替换之前的导入“月”<br> 4:加载“lubridate”时替换上一个导入“wday”<br> 5:加载“lubridate”时替换上一个导入“周”<br> 6:加载“lubridate”时替换上一个导入“yday”<br> 7:替换上一个加载“lubridate”时导入“年份”

我真的不知道该怎么做,但它们似乎是覆盖命名空间中的东西的典型警告。无论如何,我都可以安装该软件包,但是当我尝试使用它时会发生以下情况:

library(pkg)
覆盖 POSIXt、Date 和 difftime 的 + 和 - 方法
警告消息:
1:加载“lubridate”时替换之前的导入“小时”<br> 2:加载“lubridate”时替换之前的导入“mday”<br> 3: 加载 'lubridate' 时替换之前的导入 'month'<br> 4: 加载 'lubridate' 时替换之前的导入 'wday'<br> 5: 加载 'lubridate' 时替换之前的导入 'week'<br> 6:加载“lubridate”时替换先前的导入“yday”<br> 7:加载“lubridate”时替换先前的导入“年”<br> d <- my.function(arg1, arg2)
MATCH(x, x) 中的错误:找不到功能“匹配”

使用 traceback(),我发现这是在调用 merge.zoo() 期间生成的。所以我尝试在我的 R 会话期间手动加载动物园,瞧,然后该功能正常工作而没有错误消息。

我已经尝试在“pkg-package.R”文件以及 NAMESPACE 中手动更改导入的顺序。但是,根据我在其他地方找到的内容,我没有添加任何 Imports 或 Depends 到DESCRIPTION。帮助?

0 投票
4 回答
6058 浏览

r - RStudio 可以自动为函数生成 roxygen 模板吗?

RStudio 是否支持任何自动 roxygen 模板创建?

在 Emacs-ESS 中,C-x C-o将为一个函数生成一个 roxygen 模板。例如,它会自动转换:

进入这个:

RStudio 中是否存在类似的功能?

更新

  • ESS 12.09-2 开始,命令已更改为C-c C-o C-o
  • 此功能已在 Rstudio 中实现:CTRL+ALT+SHIFT+R
0 投票
0 回答
114 浏览

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

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

关于安装 rmetadata

我收到很多警告,例如

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

或者是其他东西?

0 投票
1 回答
563 浏览

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

问题

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

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


背景资料

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

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

家庭作业

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

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

创建示例源文件

合并功能

应用函数

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

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 投票
2 回答
2417 浏览

r - 绘图的新方法 - 如何导出?

我正在制作一个包,我想在其中定义一种新的绘图方法。我正在使用 roxygen 源内文档。这个问题似乎非常类似于: 如何使用 Roxygen 正确记录来自不同包的泛型的 S3 方法?Roxygen2 - 如何正确记录 S3 方法 ,但我仍然无法让它工作。

给我带来麻烦的相关部分是:

当我运行它并调查方法(绘图)时,没有为 ABI 对象定义方法。通过 ABI:::plot 访问函数(ABI 是包的名称)确实有效。使用 :: 不会。

在包构建检查期间,有一个警告:

似乎在争论中存在分歧。但我不明白这一点,因为泛型有参数 x 和......我的 ABI 方法也是如此(除了基础)。

所以有两个问题,我希望这源于同一个问题: plot.ABI 方法未导出,包检查引发警告。

我该如何解决这个问题?