问题标签 [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.
r - R - arules 和 arulesViz 包中的错误
我正在使用 R 中的arules
andarulesViz
包对我的数据实现一组关联规则。它工作得很好,直到几天前。但是现在,每当我加载使用此包的 R 文件时,我都会收到以下错误。
如果我使用该plot()
功能,arulesViz
我将面临以下错误:
所以试图卸载软件包并重新安装它。它只在重新安装后第一次工作,当我重新安装后第一次使用时,它也抛出了以下错误。
但是,一旦我保存了文件并将其加载回来,旧的错误消息就会再次重复。我在 Google 中搜索过,但没有人发布过任何接近此类错误的内容。感谢您的帮助。谢谢。
r - 加载后如何将函数附加到我的包的命名空间?
这似乎是一个奇怪的问题,但我确实有一个我正在尝试弄清楚的用例。
假设我正在编写一个包,并且我有一个函数,我想允许用户使用其他名称 - 用户提供函数的名称。我想知道实现这一目标的最佳方法是什么?
这是我想要得到的行为 - 现在用户可以调用addAlias("bar")
,然后如果他调用bar()
它,就好像他调用了我的函数。
显然这不是一个好的解决方案,因为它分配给全局环境。有没有人对什么是最好的方法有反馈?我试过的几种方法:
1.分配给globalenv
就像我在示例中展示的那样。这似乎奏效了。
2.分配到包的环境
这工作了一段时间,直到我意识到它只适用于devtools
而不是如果包由于锁定环境而正确加载
3. 将新环境附加到搜索路径
这是我不喜欢的,因为使用attach
. 在这种情况下是否有保证?我什么时候detach
?
4. 暴露一个单独的命名环境
bar()
这可行,但用户需要调用alises$bar()
or ,而不是能够调用mypackage::aliases$bar()
。我不喜欢那样,但这是一个有趣的实验。我也不知道这样导出变量是否可以?
任何帮助表示赞赏
r - 在包中包含 ggplot2 函数
我正在尝试将以下 ggplot2 辅助函数包含在一个包中[它将标签包装在 grid_facet(.~variable, labeller = "plot.label.wrap")] 中:
我的说明文件包括:导入:ggplot2。使用该函数的脚本包括:library(ggplot2)。
该包在 ?plot.label.wrap 上构建、重新加载并提供文档。可以找到:
然而:
所以我的问题是,为什么这个函数可以在 mypackage 的命名空间中找到,而不是在命令行本身?
r - 使用 Packrat 和 AppVeyor 构建 R 包
有人可以指出一个工作示例,其中Packrat与AppVeyor一起使用来构建 R 包?通过谷歌和 GitHub 搜索,我找不到任何使用 AppVeyor 的 packrat-enable 包。
appveyor.yml 文件是否需要更改?我需要通过 AppVeyor 网站添加一些设置吗?
我有一个非常小的包(testthat
是唯一的依赖项),它破坏了 AppVeyor 的构建。这是为该提交冻结的代码。这是AppVeyor 日志。
(如果这个 SO 问题听起来很熟悉,我将向Travis-CI 提出一个类似的问题。)
r-package - 当“extraPar = TRUE”时,“summary.frontier”报告的附加参数是什么?
根据“frontier”的包描述,当extraPar设置为TRUE时,会报告一些额外的参数,例如“sigmaSqU”,“sigmaSqV”等。但是,它也指出“sigmaSqU和sigmaU不是方差和标准误分别为 u"。
所以,我的问题是,如果 sigmaSqU 和 sigmaU 分别不是 u 的方差和标准误,那么它们是什么?
非常感谢。
r - 包 R 中不纯函数的常见测试
纯函数是返回值仅由其输入值决定的函数,没有可观察到的副作用。
有哪些方法可以在 R 中以编程方式捕获不纯函数?
在探索一个包时,我经常这样做
lsf.str("package:base")
(base
在这里作为一个例子)。我还尝试通过源代码查看是否/在哪里调用了我知道不纯的函数。
我倾向于多次运行函数文档中给出的示例并测试结果是否相等:例如。
is.recursive(replicate(10, 1+2))
这都不是很耗时,而且我确信有一套更好/更强大的方法来探索哪些函数是不纯的。
那么 R 包中不纯函数的常见/稳健测试是什么?
- 最佳实践切线(随意忽略):此外,如果您有一个不纯的功能,您是否应该在其下明确记录它?
r - 包依赖
我有一个 R 包,这取决于base64enc
库。当我使用 Rscript 运行包中的源文件时:
它运行得很好。
Analyzer.R 中的第一行是:
但是,当我从 repl 中的包中运行一个函数时:
它抱怨未安装base64enc。
但是,当我在 REPL 中手动包含 base64enc 时:
它工作正常。无论如何我可以告诉我的分析器包使用 base64enc 库,而不必每次使用该库时都将其包含在每个脚本中?
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
。
为什么会出现这些点?我怎样才能摆脱它们?
r - 正确使用可选包功能和依赖项
我正在尝试为包提供一些可选的、方便的功能,foo
但我与依赖项的依赖关系作斗争。具体来说,如果安装了 bioconductor KEGGgraph
-package ,我想使用它的一些功能。本身取决于-package。从我读到的(虽然不清楚)是按照建议包括(和?)。KEGGgraph
graph
KEGGgraph
graph
从文档中,我看到requireNamespace
现在鼓励使用 of::
而不是require
内部函数。事实上,如果使用包裹检查也会抱怨require
。但是,当我使用requireNamespace
并且找不到::
依赖项时。KEGGgraph
考虑以下最小的可重现示例。已安装和KEGGgraph
全新的 R-session。graph
下面的函数在-package中找不到函数:
好像requireNamespace
什么都不做。通过运行重现错误:
如果require("KEGGgraph")
已被调用,则可以正常工作:
用户真的有必要require
手动安装这个可选包吗?在函数定义中添加&& requireNamespace("graph")
-conditionif
似乎没有帮助。
r - 可以在 roxygen2 代码块中使用换行符吗?
我想知道在记录函数时是否可以在 roxygen2 的代码块中插入换行符?
如果我在里面有东西\code{}
,roxygen2 默认将所有换行符折叠成单个空格。我尝试\cr
在里面插入以强制换行,我得到了所需的行为,但是当我“R CMD CHECK”时我得到了一个警告。有没有办法做到这一点?
例子: