问题标签 [r-package]

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 回答
3475 浏览

r - R - arules 和 arulesViz 包中的错误

我正在使用 R 中的arulesandarulesViz包对我的数据实现一组关联规则。它工作得很好,直到几天前。但是现在,每当我加载使用此包的 R 文件时,我都会收到以下错误。

如果我使用该plot()功能,arulesViz我将面临以下错误:

所以试图卸载软件包并重新安装它。它只在重新安装后第一次工作,当我重新安装后第一次使用时,它也抛出了以下错误。

但是,一旦我保存了文件并将其加载回来,旧的错误消息就会再次重复。我在 Google 中搜索过,但没有人发布过任何接近此类错误的内容。感谢您的帮助。谢谢。

0 投票
1 回答
84 浏览

r - 加载后如何将函数附加到我的包的命名空间?

这似乎是一个奇怪的问题,但我确实有一个我正在尝试弄清楚的用例。

假设我正在编写一个包,并且我有一个函数,我想允许用户使用其他名称 - 用户提供函数的名称。我想知道实现这一目标的最佳方法是什么?

这是我想要得到的行为 - 现在用户可以调用addAlias("bar"),然后如果他调用bar()它,就好像他调用了我的函数。

显然这不是一个好的解决方案,因为它分配给全局环境。有没有人对什么是最好的方法有反馈?我试过的几种方法:

1.分配给globalenv

就像我在示例中展示的那样。这似乎奏效了。

2.分配到包的环境

这工作了一段时间,直到我意识到它只适用于devtools而不是如果包由于锁定环境而正确加载

3. 将新环境附加到搜索路径

这是我不喜欢的,因为使用attach. 在这种情况下是否有保证?我什么时候detach

4. 暴露一个单独的命名环境

bar()这可行,但用户需要调用alises$bar()or ,而不是能够调用mypackage::aliases$bar()。我不喜欢那样,但这是一个有趣的实验。我也不知道这样导出变量是否可以?

任何帮助表示赞赏

0 投票
1 回答
358 浏览

r - 在包中包含 ggplot2 函数

我正在尝试将以下 ggplot2 辅助函数包含在一个包中[它将标签包装在 grid_facet(.~variable, labeller = "plot.label.wrap")] 中:

我的说明文件包括:导入:ggplot2。使用该函数的脚本包括:library(ggplot2)。

该包在 ?plot.label.wrap 上构建、重新加载并提供文档。可以找到:

然而:

所以我的问题是,为什么这个函数可以在 mypackage 的命名空间中找到,而不是在命令行本身?

0 投票
1 回答
754 浏览

r - 使用 Packrat 和 AppVeyor 构建 R 包

有人可以指出一个工作示例,其中PackratAppVeyor一起使用来构建 R 包?通过谷歌和 GitHub 搜索,我找不到任何使用 AppVeyor 的 packrat-enable 包。

appveyor.yml 文件是否需要更改?我需要通过 AppVeyor 网站添加一些设置吗?

我有一个非常小的包(testthat是唯一的依赖项),它破坏了 AppVeyor 的构建。这是为该提交冻结的代码。这是AppVeyor 日志

(如果这个 SO 问题听起来很熟悉,我将向Travis-CI 提出一个类似的问题。)

0 投票
1 回答
50 浏览

r-package - 当“extraPar = TRUE”时,“summary.frontier”报告的附加参数是什么?

根据“frontier”的包描述,当extraPar设置为TRUE时,会报告一些额外的参数,例如“sigmaSqU”,“sigmaSqV”等。但是,它也指出“sigmaSqU和sigmaU不是方差和标准误分别为 u"。

所以,我的问题是,如果 sigmaSqU 和 sigmaU 分别不是 u 的方差和标准误,那么它们是什么?

非常感谢。

0 投票
0 回答
169 浏览

r - 包 R 中不纯函数的常见测试

纯函数是返回值仅由其输入值决定的函数,没有可观察到的副作用。

有哪些方法可以在 R 中以编程方式捕获不纯函数?

  • 在探索一个包时,我经常这样做lsf.str("package:base")base在这里作为一个例子)。

  • 我还尝试通过源代码查看是否/在哪里调用了我知道不纯的函数。

  • 我倾向于多次运行函数文档中给出的示例并测试结果是否相等:例如。is.recursive(replicate(10, 1+2))

这都不是很耗时,而且我确信有一套更好/更强大的方法来探索哪些函数是不纯的。

那么 R 包中不纯函数的常见/稳健测试是什么?

- 最佳实践切线(随意忽略):此外,如果您有一个不纯的功能,您是否应该在其下明确记录它?

注意,我只是在寻找人们可能会使用的常见清单类型的东西,而不是总是能抓住所有情况的东西(因为这甚至可能是不可能的.._
0 投票
1 回答
165 浏览

r - 包依赖

我有一个 R 包,这取决于base64enc库。当我使用 Rscript 运行包中的源文件时:

它运行得很好。

Analyzer.R 中的第一行是:

但是,当我从 repl 中的包中运行一个函数时:

它抱怨未安装base64enc。

但是,当我在 REPL 中手动包含 base64enc 时:

它工作正常。无论如何我可以告诉我的分析器包使用 base64enc 库,而不必每次使用该库时都将其包含在每个脚本中?

0 投票
2 回答
687 浏览

r - 为什么@family 标签会在 roxygen2 中的单词之间添加点?

我正在编写一个 R 包并使用 roxygen2 创建文档。我使用RStudio 中的Build & Reload按钮构建包和文档。根据 RStudio 的输出,它用于devtools::document(roclets=c('rd', 'namespace'))编译文档。

我想使用@family标签将文档中的许多功能链接在一起,这就是我的问题发生的地方。这条线

在 .Rd 文件中转换为以下

我不想要单词之间的点。我有一个较旧的包,即使我以与编译新包完全相同的设置重新编译文档,也不会发生这种情况。我看不出这个旧包和我的新尝试之间没有根本区别。

我写了一个非常简单的测试包,问题也出现了。它包含一个 R 文件 ( testpackage.R):

描述文件是

NAMESPACE 是由 roxygen 生成的。对于文档test1.Rd,我得到:

\seealso部分中不需要的点。显然,@family标签中的单词数量似乎并不重要。我试过用引号、各种括号等将文本括起来,但没有任何积极作用。当然,我可以编辑 Rd 文件,但这会错过使用 roxygen2 的意义。

R CMD check在 .上运行而没有警告或错误testpackage

为什么会出现这些点?我怎样才能摆脱它们?

0 投票
2 回答
296 浏览

r - 正确使用可选包功能和依赖项

我正在尝试为包提供一些可选的、方便的功能,foo但我与依赖项的依赖关系作斗争。具体来说,如果安装了 bioconductor KEGGgraph-package ,我想使用它的一些功能。本身取决于-package。从我读到的(虽然不清楚)是按照建议包括(和?)。KEGGgraphgraphKEGGgraphgraph

文档中,我看到requireNamespace现在鼓励使用 of::而不是require内部函数。事实上,如果使用包裹检查也会抱怨require。但是,当我使用requireNamespace并且找不到::依赖项时。KEGGgraph

考虑以下最小的可重现示例。已安装和KEGGgraph全新的 R-session。graph下面的函数在-package中找不到函数:

好像requireNamespace什么都不做。通过运行重现错误:

如果require("KEGGgraph")已被调用,则可以正常工作:

用户真的有必要require手动安装这个可选包吗?在函数定义中添加&& requireNamespace("graph")-conditionif似乎没有帮助。

0 投票
1 回答
1743 浏览

r - 可以在 roxygen2 代码块中使用换行符吗?

我想知道在记录函数时是否可以在 roxygen2 的代码块中插入换行符?

如果我在里面有东西\code{},roxygen2 默认将所有换行符折叠成单个空格。我尝试\cr在里面插入以强制换行,我得到了所需的行为,但是当我“R CMD CHECK”时我得到了一个警告。有没有办法做到这一点?

例子: