问题标签 [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 - 如何在扩展 S4 类的 R 包中解决警告消息(未找到元数据对象;未导出 SpatialLinesNULL 类)
这是我在 StackOverflow 上发布的第一个问题,因此请更正我犯的任何协议错误。但是我已经从对网站上许多其他问题的回答中受益匪浅,所以在我继续之前,我要感谢为该网站做出贡献的社区。
概述
我在 Windows 7 机器上使用 R、RStudio、包和包(devtools
问题结尾处完整)roxygen2
session_info
我正在尝试编写自己的包,它SpatialLines
从包中定义了 S4 类的子类sp
,并且还使用了包rgeos
。document
当我使用 devtools和
load_all
我的包时,我的问题与我不太了解且无法完全解决的警告消息有关。
警告信息
第一条消息是
当我解决这个问题时,通过在 NAMESPACE 文件中添加一个条目(不完全理解为什么它是必要的),然后对DESCRIPTION 文件进行进一步的更改,我收到了第二条消息,到目前为止我已经被打败了。
我所尝试的,以及我留下的问题
我已经用谷歌搜索并搜索了几个寻找提示的网站,但我找到的最接近的是 2011 年 12 月的一个简短线程,询问 SpatialLinesNULL 来自哪里 --- 答案是rgeos
。
http://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_all
或document
)。
在跟进下面给出的答案时,我意识到我也应该尝试从 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
描述文件
命名空间文件
结论
非常感谢您提供的任何帮助、建议或指导!即使这只是关于我如何提出更好的问题:-)
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,但我仍然遇到同样的问题。
第三次编辑:这些是我的依赖项:
r - 为 R 包创建 data.frame
我正在制作一个 R 包,并且需要跟踪使用包中的函数打开的文件。
在以(充分)对用户隐藏的方式加载包时创建 R 对象(在本例中为 data.frame)的推荐过程是什么?我不希望用户手动编辑 data.frame。
我的一个想法是在调用options
内部的设置中创建一个 data.frame .onLoad
(类似于 Hadley 在他的devtools
包中所做的),但打开的文件列表在我的包中并不是真正的可配置“选项”。还有其他方法吗?
c++ - 如何在 R 的 .C() 函数中使用 fasta 数据作为参数
我确实在 C++ 中将我的方法编程为名为“test.cc”的函数。我的程序的语法是;
其中input.fasta是数据文件
Theta是数值范围 2 到 10。输出存储在output.txt文件中。
用于开发 R 包;首先,我使用以下命令对其进行了编译。
产生“ test.dll ”文件。我使用以下命令将其加载到 R 中;
我正在尝试调用测试函数,但是在读取数据时会出错;
我没有使用此命令的经验;问题是我如何将 input.fasta 读取到 .C() 并将输出写入文件。
如果您提供一些解决此问题的想法,我将不胜感激。
r - 制作仅加载其他包并导出所有功能的 R-package
是否可以制作一个仅从其他 R 包中导出所有功能的 R 包?是否有另一种方法可以在手册、代码文件等中对包中的功能进行相应分类和排序?
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)... ,分别用于构建。
在我添加一些额外的代码之前,它已经适用于那个特定的包,但删除它似乎没有帮助。这个错误是什么意思以及寻找解决方案的方法是什么?
r - 出于安全原因,包 vignette 中的 R 代码无法在 CRAN 上运行。如何管理这样的小插曲?
R 包使用私有用户名和密码与商业数据库通信以建立连接。在 package_vignette.Rmd 文件中有一段代码:
我无权向 CRAN 提供实际的用户名和密码,因此我无法在包中提供真正的“connection.config”文件。因此,当然,此代码片段会在 CRAN 检查期间导致错误。
我知道两种绕过 CRAN 检查的方法:
使用 knitr 选项:
eval = FALSE
.在 R.rsp包的帮助下制作静态小插图。
第一种方法太耗时了,因为有很多块,我经常重写/重建小插图。第二种方式对我来说更好。但是可能有更好的模式如何支持这样的小插曲?例如,在包的测试中,我testthat::skip_on_cran()
用来避免 CRAN 检查。
r - 构建包中的 Rcpp openmp 插件
当我编写独立的 cpp 脚本时,我使用 // [[Rcpp::plugins(openmp)]]
.
但是,当我尝试使用 Rcpp 构建 R 包时,我不知道如何让编译器知道我有一个插件。我试图添加Plugin:openmp
描述,但它不起作用。
任何人都可以帮忙吗?
r - 如何列出 R 包的所有演示及其来源
我想知道是否有一个特殊的命令可以列出一个包的所有演示程序(R-scripts)并在不运行它们的情况下检查它们的内容,即不使用
特别是,我正在寻找一种方法来实现这一点,而无需下载源代码和浏览演示目录。
r - 安装 Apache SparkR 包时出错
sparkr
安装 apache包时出现以下错误: