问题标签 [s4]

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

r - 在 R 包中定义组通用函数

我无法在我正在编写的 R 包中定义组泛型。

这是一个相当简单的例子:

如果我将此代码粘贴到 R 终端中,那么一切都会按预期工作:

但是,一旦我尝试将其构建到一个包中,我就会遇到以下错误:

我正在使用 package.skeleton() 的默认输出,并添加了:

进入命名空间文件

知道我做错了什么吗?

0 投票
0 回答
803 浏览

r - 使用 roxygen2 记录 S4 方法:帮助文件中清楚区分方法

在你瞄准和射击之前

我知道这个问题与这篇文章密切相关。事实上,我遵循了各种答案中给出的建议,但仍然觉得生成的帮助文件有点“尴尬”,或者至少看起来有点“混杂在一起”,因此我的问题

实际问题

  1. 在记录 S4 泛型及其各自的方法时,我如何最终得到一个 Rd 文件结构,让用户清楚地区分各种方法,从而非常清楚文档的哪个部分具体属于哪个方法?
  2. 鉴于我提供了标签,在尝试获得特定@alias方法的帮助时,我该如何实际使用它们?类似的东西,而不仅仅是打字??foo-character-method?foo
  3. 最好不要在通用方法中记录 a) 签名参数,因为每个方法肯定包含各自的文档和 b) 返回值,因为这也取决于各自的方法?

现在,我觉得我最终得到了一个帮助文件,它似乎无法正确区分通用方法和各种方法 - 至少在视觉上没有。

但也许我还没有完全明白这一点;-)。在这种情况下,任何指针都将不胜感激!


这是一个可重现的示例,它生成mypkg包含 S4 泛型和两个方法的包。我尝试遵循这篇文章编写 R 扩展中给出的建议

确保目录

通用方法定义

关联方法的定义

创建包骨架

充氧

修补 Rd 文件

有些东西需要打补丁才能允许自动检查和构建过程,不需要任何手动干预,例如手动编辑 Rd 文件等。

检查包裹

构建和安装包

调查帮助文件


替代方式:构建和安装分离

0 投票
1 回答
1602 浏览

r - 将参数的默认值从 S4 泛型函数分派到其关联方法

假设与特定 S4 通用函数/方法关联的所有S4 方法共享一个应该具有特定默认值的形式参数。直观地说,我会在 S4泛型的定义中陈述这样一个论点(而不是在每个方法定义中陈述它,这对我来说似乎有些多余)。

但是,我注意到这样我遇到了麻烦,因为似乎形式参数的默认值没有分派给方法,因此引发了错误。

这不是有点反对结合泛型和方法的想法吗?当默认值始终相同时,为什么我必须再次在每个方法中分别声明形式参数?我可以以某种方式显式分派形式参数的默认值吗?


您将在下面找到该行为的简短说明

通用函数

方法

错误

do.both修复它的冗余声明

0 投票
3 回答
693 浏览

r - 参考类、制表符补全和强制方法定义

我目前正在使用参考类编写一个包。我在阅读各种资料时遇到了一个问题:

R 参考类中的方法初始化

无法在 Snowfall 中可靠地使用 RefClass 方法

我认为是因为引用方法并非全部复制到类中的每个对象,而是在第一次访问时被复制。

https://stat.ethz.ch/pipermail/r-devel/2011-June/061261.html

例如定义:

所以 example 是 class 的一个新对象TESTexample$在控制台中键入和制表符给出

因此该方法addone未作为选项提供。但是可以调用:

现在标签再次显示

所以现在addonefieldshow作为选项呈现。

Martin Morgan 建议在上述链接之一中强制定义方法。这很好用

所以现在制表符给出:

我的一些课程有超过 30 种方法,所以我想尽可能简洁地做到这一点。我已经定义:

制表符现在给出:

虽然这有效,但感觉有点笨拙。也test$def@refMethods被使用而不是getRefClass("TEST")$def@refMethods这样,感觉有点不对劲。以前有没有人处理过这个问题。

有没有更好的方法来解决问题?如果问题过于冗长,感谢您的任何建议和道歉。

0 投票
1 回答
112 浏览

r - 从多个以插槽为条件的实例中选择一个类的实例?

假设我有一个S4类的几个实例,就像在这个例子中一样。

我想返回包含单词的所有类的名称(即名称槽或对象名称)test。如果我只grep在单个插槽上使用它确实可以部分工作:

我最终得到了整个表达式“一些测试”。当然,我可以将所有这些插槽放在一个列表中并应用于它们。但我仍然只是以描述本身结束,而不知道它们属于哪个名称。

那么,我怎样才能找到我想要的实例呢?

你宁愿在一个单独的环境中组织一堆类的实例还是一个实例列表?

0 投票
1 回答
1438 浏览

r - 为什么有时我不能将类定义设置为 s4 类中的插槽?

0 投票
2 回答
4140 浏览

r - 显示 R 包中函数的源代码

可能重复:
R:显示包中 S4 函数的源代码

我下载了一个包 ( GEOquery) 并正在使用其中的一些功能。其中一个叫做Table,据我了解,它能够将S4数据集制成表格。

例如

getAnywhere(Table)节目

我想学习的代码,Table以便我可以知道如何将 GDS 数据集制成表格,data.frame并且as.list不能强制S4上课 - 尽管我可以通过例如,将 GDS 数据集制成表格,

我尝试了getMethods其他帖子中建议的方法,但以下是我得到的

我还尝试通过输入来指定“位置”,package=:GEOquery但显然package是一个未使用的参数。

想知道我做错了什么,以至于看不到Table.

0 投票
1 回答
744 浏览

r - 将 S4 调度添加到基本 R S3 通用

我正在尝试添加一个merge需要 S4 的空间方法(因为它在两个不同对象的类型上调度)。

我尝试使用早期的解决方案,如下所示:

哪个有效:

您将不得不相信我,如果 x 真的是 SPDF 而不是伪造的,那么它不会返回如果您实际运行该代码(或不运行该代码,而只是使用更宽松的通用下面不返回错误)。SPDF 很难创建。

问题是它似乎覆盖了 S3 调度:

我该如何避免呢?我已经尝试从中删除函数定义,setGeneric以便它可以简单地读取setGeneric("merge"),但这也不起作用。我是否需要以某种方式导入mergeS3 泛型base

0 投票
1 回答
958 浏览

r - S4 类定义是如何在包中完成的,它是如何正确记录的?

一旦我定义了一个类,我就想知道在包中的哪个位置。应该只创建一个classDefintions.R包含我的 S4 类定义的文件并将其放入 R 文件夹吗?如果是这样,我怎样才能正确记录它?周围有.rdS4 类的文件模板吗?

我在 Roxygen2 上找到了这篇文章,但我可能落后了几步。它基本上是如何完成和定位的?

0 投票
1 回答
2370 浏览

r - S4 类:每个插槽多种类型

是否可以创建一个 S4 类,其中一个或多个插槽可以属于多个类?例如。假设您遇到数据可以是向量或 data.frame 的情况。

或者,这是需要定义子类/超类的情况吗?

PS:搜索有关 S4 课程的有用教程会产生有限的结果。链接到一个关于 S4 类创建/使用/文档的好教程将不胜感激。