问题标签 [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 回答
496 浏览

r - 如何获取在 R 中具有公共 S4 超类的类列表

在 R 中,如何获取 S4 超类的子类列表?

我找到了 showClass("mySuperClass",complete=FALSE) 但它只打印结果。我想将它存储在一个向量中以使用它。

0 投票
1 回答
636 浏览

r - R 在同一个包中使用 s3 和 s4 方法进行模拟

我对错误感到困惑

我编写了一个 R 包,其中包含一个作为 S3 方法的模拟()方法的定义。因为已经定义了模拟的泛型,所以我只定义了一个模拟.myclass(我的例子中是模拟.fitContinuous)。

该软件包还依赖于另一个具有 S4 版本模拟的软件包。加载我的包时,我收到上面的 S4 版本错误。我不确定是什么导致了错误。

通过从 github获取包的可重现示例,或者执行


要从头开始重现此错误:使用最少的说明文件创建一个新包。包括说明进口:哎哟。创建一个 NAMESPACE 并添加 imports(ouch) 和 S3method(simulate, test)。创建 R 目录,添加一个简单的 R 脚本(我已经包含了 roxygen 文档,它将生成我刚才提到的 NAMESPACE,但是这个错误也可以在没有 devtools/roxygen 的情况下创建):

安装包(如果你愿意,请先用 devtools 记录),然后你会得到错误。

到目前为止,我最好的解决方案是从 NAMESPACE 中删除 S3method 行,并导出完整的函数模拟.test。这将通过检查并在没有警告的情况下安装,但显然是一个较差的解决方案。

一个不同的解决方案是在依赖和导入中添加 ouch,并正确记录 S3 方法(如上)。然后一切都按预期工作,但警告消息仍然存在。

0 投票
2 回答
1321 浏览

r - R中S4对象的总和

我有一个 S4 类,我想定义这些对象的线性组合。

是否可以在这个特定的类上调度*+函数?

0 投票
1 回答
2272 浏览

r - 如何使用 Roxygen2 添加没有通用别名的类特定别名?

一个简单的例子是我创建了一个扩展show,这是一个 S4 基础方法。我不想通过在我的包中重新记录来引起歧义分叉,show并且我还想通过为.showmyPkgSpClassshow,myPkgSpClass-method

我遇到的问题是,这会在 roxygen2 构建文档期间导致严重警告,Rd files with duplicated alias 'show':因为此包中有多个类扩展show,并且 roxygen2 已自动将通用术语添加到所有别名列表中相关*-class.Rd文件:

但我认为我不希望在任何情况下都使用通用别名,因为它会强制show在我的包和 base之间消除歧义show。此问题也适用于从其他包扩展的其他 S4 方法,除了show.

如果我将所有特定于类的方法标记到同一个.Rd文件,那么警告就会消失,但歧义仍然存在,因为show仍然会为该文档条目自动添加别名。如果我手动\alias{show}.Rd文件中删除,那么问题似乎解决了,在 roxygen 或R CMD check pkgname. 那么如何让 Roxygen2 不添加通用别名呢?

其他背景:

这是从上一期关于将 S4 扩展导出/记录到基本方法的问题中构建的一个特定问题: 是否有必要在 R 包中导出基本方法扩展?文档影响?

它比以下有关使用 Roxygen2 记录 S4 方法/类的问题更具体且未涵盖:

如何使用 roxygen2 正确记录 S4 方法

如何使用 Roxygen2 正确记录 S4 类插槽?

0 投票
1 回答
411 浏览

r - 在 S4 对象中使用 S3 类的示例

我想包含一个 RODBC 连接作为 S4 对象的一部分。看起来 RODBC 是 S3。例如:

抛出undefined slot classes。看起来我想使用setOldClass,但我无法弄清楚如何使用它。假设我确实想要setOldClass,我将如何使用setOldClass以便我可以将我的 RODBC 连接作为插槽包含到我的 Node 类中?

0 投票
1 回答
593 浏览

r - 在没有赋值的 R 中设置方法

我想在 R 中有一些初始化替换方法,我可以在没有赋值运算符的情况下调用它们。

例如:

我希望能够调用setNode(o)和替换对象 o 中的插槽,而不必调用类似setnode(o) <- c("foo", "bar"). 我想这样做的原因是因为我希望在这些(即select.list)中有一些交互性,而该方法的用户不必知道分配的细节。

这可能吗?

0 投票
1 回答
421 浏览

r - 用于在对象和新数据类上进行“预测”调度的 S4 方法

predict用参数object和定义...。我导出了一个类似 PCA 的模型,我称之为 pcaadd 并编写了一个predict.pcaadd函数。到现在为止还挺好。现在我想添加一个 (S4) 方法,该方法适用于object签名和(signature )"pcaadd"中的特定类型的对象 。newdata"hyperSpec"

(如何)如果泛型是用 object...仅定义的,我可以这样做吗?

这是我目前所做的:检查类newdata并进行适当的处​​理,但这似乎不是一个干净的解决方案:

0 投票
1 回答
116 浏览

r - 使用哪种类型的对象来分配几个 s4 类对象?

我想这样做:

..但不知道我可以使用哪种类型的对象来分配 ctree 结果。

感谢您的任何指点,凯

0 投票
4 回答
8052 浏览

r - 直接使用 @ 访问 S4 对象插槽是不好的做法吗?

这几乎是一个哲学问题:直接使用访问和/或设置 S4 对象的插槽是否不好@

我一直被告知这是不好的做法,用户应该使用“访问器”S4 方法,并且开发人员应该为他们的用户提供这些方法。但我想知道是否有人知道这背后的真正交易?

这是一个使用sp包的示例(但可以推广到任何 S4 类):

0 投票
2 回答
780 浏览

r - 如何将来自 nigfit() 的估计参数保存在变量中

我想自动将时间序列返回拟合到 NIG 分布中。使用 fBasics 包中的 nigfit(),我估计了分布的 mu、alpha、beta 和 delta。

这很好用,这意味着 nigfit 绘制了我的参数。但是我想使用估计的参数并将它们保存在变量中。所以我以后可以使用它们。

这行不通。“变量”是类结构fDISTFIT的S4 对象。调用该变量会重新绘制上面 nigfit 的输出。我尝试了以下符号,只得到一个参数:

我在 nigfit 的文档中找不到答案。是否可以将估计的参数保存在变量中?它是如何工作的?