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

r - 如何在扩展 S4 类的 R 包中解决警告消息(未找到元数据对象;未导出 SpatialLinesNULL 类)

这是我在 StackOverflow 上发布的第一个问题,因此请更正我犯的任何协议错误。但是我已经从对网站上许多其他问题的回答中受益匪浅,所以在我继续之前,我要感谢为该网站做出贡献的社区。

概述

我在 Windows 7 机器上使用 R、RStudio、包和包(devtools问题结尾处完整)roxygen2session_info

我正在尝试编写自己的包,它SpatialLines从包中定义了 S4 类的子类sp,并且还使用了包rgeosdocument当我使用 devtools和 load_all我的包时,我的问题与我不太了解且无法完全解决的警告消息有关。

警告信息

第一条消息是

当我解决这个问题时,通过在 NAMESPACE 文件中添加一个条目(不完全理解为什么它是必要的),然后对DESCRIPTION 文件进行进一步的更改,我收到了第二条消息,到目前为止我已经被打败了。

我所尝试的,以及我留下的问题

我已经用谷歌搜索并搜索了几个寻找提示的网站,但我找到的最接近的是 2011 年 12 月的一个简短线程,询问 SpatialLinesNULL 来自哪里 --- 答案是rgeoshttp://lists.r-forge.r-project.org/pipermail/rspatial-devel/2011-December/000033.html

我已经尝试自己尝试了解出了什么问题,并在调试器中逐步执行代码,直到我迷路为止,这比我能够很好地理解应该发生的事情要深入得多。在此过程中产生了一个小(非)问题的工作示例,如下所示。

我有 3 个问题。它们在此处进行了总结,但实际上仅在下面我的(非)工作玩具示例的上下文中才有意义:

  • 问题 1(在 test1 之后)为什么 R 仍然需要(虚拟?)超类Spatial,为什么只有在我的代码中定义了第二代 MyClass2时?
    澄清补充说@importClassesFrom,我曾认为,一旦我编辑了我实际使用的类,R 打包命名空间机制就会满足查找和访问前项/超类的任何需要。
  • 问题 2(在 test3 之后)我假设无论我的第一条警告消息的原因是什么,也是这个类似消息的原因。
    我在正确的轨道上吗?
  • 问题 3(在 test4 之后)来自 test3 的警告和随后的错误是我可以自己解决的吗(如果可以的话)?还是我需要向rgeos软件包的维护者寻求帮助(例如要求他们导出SpatialLinesNULL)?

代码示例

我的玩具工作示例的 r 代码(仅去除 roxygen 注释以节省空间)是:

MyClass2 第二代子类似乎很重要(没有它,警告就会消失)。我不懂为什么。

devtools我使用and 对此代码运行了一系列测试roxygen2。测试因 NAMESPACE 文件中的内容以及DESCRIPTION 文件中的 Imports 指令中的内容而异。执行测试包括在 RStudio 中运行devtools::load_all()(或沿途devtools::document()调用)。load_all()发生的警告消息已在上面发布。我在每次测试之间在干净的全局环境中重新启动我的 R 会话(警告仅在我第一次运行时出现load_alldocument)。

在跟进下面给出的答案时,我意识到我也应该尝试从 shell 命令行使用 R 构建和安装我的玩具包。

测试1

test1 有DESCRIPTION文件条目(完整的DESCRIPTION文件见这个问题的结尾):

完整的 NAMESPACE 文件(从上面省略的 roxygen 注释生成)是:

尝试在重新启动的 R 会话中运行devtools::load_all()(或devtools::document())会生成第一个警告(如上所示)。

问题 1为什么 R 需要 ~~(virtual?)~~ 超类Spatial,为什么只有MyClass2在我的代码中定义了第二代时? 澄清补充说@importClassesFrom,我曾认为,一旦我编辑了我实际使用的类,R 打包命名空间机制就会满足查找和访问前项/超类的任何需要。

测试2

test2通过更新 NAMESPACE 文件来解决问题,如警告消息所示。没有进行其他更改。

当完整的 NAMESPACE 文件为:

测试3

但是,当我对DESCRIPTION 文件中的Imports 指令(即添加rgeos. 这是从 test2 创建 test3 场景的唯一更改。

现在我收到一个警告,看起来像是来自 test1 的问题,即:

据我所知,SpatialLinesNULL是一个新的超类Spatial,定义在rgeos它可以提供一些通用函数和方法。

问题 2我假设无论我的第一条警告消息的原因是什么,这也是此类似消息的原因。
我在正确的轨道上吗?

测试4

在 test4 中,我尝试应用与 test2 中相同的解决方案即将缺失的条目添加到 NAMESPACE 文件中。这是 test4 的完整 NAMESPACE 文件。

在哪个阶段我收到最后的错误消息:

在这个阶段我被卡住了。

问题 3来自 test3 的警告和随后的错误是我可以自己解决的吗(如果可以的话)?还是我需要向rgeos软件包的维护者寻求帮助(例如要求他们导出SpatialLinesNULL)?

session_info(来自 test4)

test4 的完整文件

R/myclasses.r

描述文件

命名空间文件

结论

非常感谢您提供的任何帮助、建议或指导!即使这只是关于我如何提出更好的问题:-)

0 投票
1 回答
1311 浏览

r - 使用 packrat 更新 R 后,包构建中的包不可用

我最近更新到 R 3.1.3,我正在使用 RStudio 和packrat. 我正在尝试使用 RStudio 内置的“构建和重新加载”工具重新构建我的包,但它不起作用。我不断收到以下错误:

问题是,我已经ggplot2在所有地方安装了 R 3.1.2 和 R 3.1.3 的本地库和我的 Packrat 库。我试过加载它们无济于事。

另外,使用devtools::build()anddevtools::document()都可以,所以我假设这是一个 RStudio 问题?

注意:我使用的是 RStudio 版本 0.99.235。

编辑:我也看不到我的包的任何文档,而且它似乎不在我的 packrat 库中。

第二次编辑:我已经卸载了 R 3.1.3 并恢复到 R 3.1.2,但我仍然遇到同样的问题。

第三次编辑:这些是我的依赖项:

0 投票
1 回答
111 浏览

r - 为 R 包创建 data.frame

我正在制作一个 R 包,并且需要跟踪使用包中的函数打开的文件。

在以(充分)对用户隐藏的方式加载包时创建 R 对象(在本例中为 data.frame)的推荐过程是什么?我不希望用户手动编辑 data.frame。

我的一个想法是在调用options内部的设置中创建一个 data.frame .onLoad(类似于 Hadley 在他的devtools包中所做),但打开的文件列表在我的包中并不是真正的可配置“选项”。还有其他方法吗?

0 投票
0 回答
89 浏览

c++ - 如何在 R 的 .C() 函数中使用 fasta 数据作为参数

我确实在 C++ 中将我的方法编程为名为“test.cc”的函数。我的程序的语法是;

其中input.fasta是数据文件

Theta是数值范围 2 到 10。输出存储在output.txt文件中。

用于开发 R 包;首先,我使用以下命令对其进行了编译。

产生“ test.dll ”文件。我使用以下命令将其加载到 R 中;

我正在尝试调用测试函数,但是在读取数据时会出错;

我没有使用此命令的经验;问题是我如何将 input.fasta 读取到 .C() 并将输出写入文件。

如果您提供一些解决此问题的想法,我将不胜感激。

0 投票
1 回答
91 浏览

r - 制作仅加载其他包并导出所有功能的 R-package

是否可以制作一个仅从其他 R 包中导出所有功能的 R 包?是否有另一种方法可以在手册、代码文件等中对包中的功能进行相应分类和排序?

0 投票
1 回答
203 浏览

r - devtools::build: "if (!is_loaded(pkg) || (is_loaded(pkg) && reload)) { : 需要 TRUE/FALSE 的缺失值"

每次我尝试使用 devtools 函数构建、检查或记录某个 R-package 文件夹时,它都会引发以下错误:

if (!is_loaded(pkg) || (is_loaded(pkg) && reload)) { 中的错误:需要 TRUE/FALSE 的缺失值

或 if (pkgname != intname)... ,分别用于构建。

在我添加一些额外的代码之前,它已经适用于那个特定的包,但删除它似乎没有帮助。这个错误是什么意思以及寻找解决方案的方法是什么?

0 投票
2 回答
265 浏览

r - 出于安全原因,包 vignette 中的 R 代码无法在 CRAN 上运行。如何管理这样的小插曲?

R 包使用私有用户名和密码与商业数据库通信以建立连接。在 package_vignette.Rmd 文件中有一段代码:

我无权向 CRAN 提供实际的用户名和密码,因此我无法在包中提供真正的“connection.config”文件。因此,当然,此代码片段会在 CRAN 检查期间导致错误。

我知道两种绕过 CRAN 检查的方法:

  1. 使用 knitr 选项:eval = FALSE.

  2. 在 R.rsp包的帮助下制作静态小插图。

第一种方法太耗时了,因为有很多块,我经常重写/重建小插图。第二种方式对我来说更好。但是可能有更好的模式如何支持这样的小插曲?例如,在包的测试中,我testthat::skip_on_cran()用来避免 CRAN 检查。

0 投票
1 回答
678 浏览

r - 构建包中的 Rcpp openmp 插件

当我编写独立的 cpp 脚本时,我使用 // [[Rcpp::plugins(openmp)]].

但是,当我尝试使用 Rcpp 构建 R 包时,我不知道如何让编译器知道我有一个插件。我试图添加Plugin:openmp描述,但它不起作用。

任何人都可以帮忙吗?

0 投票
1 回答
446 浏览

r - 如何列出 R 包的所有演示及其来源

我想知道是否有一个特殊的命令可以列出一个包的所有演示程序(R-scripts)并在不运行它们的情况下检查它们的内容,即不使用

特别是,我正在寻找一种方法来实现这一点,而无需下载源代码和浏览演示目录。

0 投票
2 回答
2798 浏览

r - 安装 Apache SparkR 包时出错

sparkr安装 apache包时出现以下错误: