问题标签 [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.
r - 如何获取在 R 中具有公共 S4 超类的类列表
在 R 中,如何获取 S4 超类的子类列表?
我找到了 showClass("mySuperClass",complete=FALSE) 但它只打印结果。我想将它存储在一个向量中以使用它。
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 方法(如上)。然后一切都按预期工作,但警告消息仍然存在。
r - R中S4对象的总和
我有一个 S4 类,我想定义这些对象的线性组合。
是否可以在这个特定的类上调度*
和+
函数?
r - 如何使用 Roxygen2 添加没有通用别名的类特定别名?
一个简单的例子是我创建了一个扩展show
,这是一个 S4 基础方法。我不想通过在我的包中重新记录来引起歧义分叉,show
并且我还想通过为.show
myPkgSpClass
show,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 方法/类的问题更具体且未涵盖:
r - 在 S4 对象中使用 S3 类的示例
我想包含一个 RODBC 连接作为 S4 对象的一部分。看起来 RODBC 是 S3。例如:
抛出undefined slot classes
。看起来我想使用setOldClass
,但我无法弄清楚如何使用它。假设我确实想要setOldClass
,我将如何使用setOldClass
以便我可以将我的 RODBC 连接作为插槽包含到我的 Node 类中?
r - 在没有赋值的 R 中设置方法
我想在 R 中有一些初始化替换方法,我可以在没有赋值运算符的情况下调用它们。
例如:
我希望能够调用setNode(o)
和替换对象 o 中的插槽,而不必调用类似setnode(o) <- c("foo", "bar")
. 我想这样做的原因是因为我希望在这些(即select.list
)中有一些交互性,而该方法的用户不必知道分配的细节。
这可能吗?
r - 用于在对象和新数据类上进行“预测”调度的 S4 方法
predict
用参数object
和定义...
。我导出了一个类似 PCA 的模型,我称之为 pcaadd 并编写了一个predict.pcaadd
函数。到现在为止还挺好。现在我想添加一个 (S4) 方法,该方法适用于object
签名和(signature )"pcaadd"
中的特定类型的对象 。newdata
"hyperSpec"
(如何)如果泛型是用 object
且...
仅定义的,我可以这样做吗?
这是我目前所做的:检查类newdata
并进行适当的处理,但这似乎不是一个干净的解决方案:
r - 使用哪种类型的对象来分配几个 s4 类对象?
我想这样做:
..但不知道我可以使用哪种类型的对象来分配 ctree 结果。
感谢您的任何指点,凯
r - 直接使用 @ 访问 S4 对象插槽是不好的做法吗?
这几乎是一个哲学问题:直接使用访问和/或设置 S4 对象的插槽是否不好@
?
我一直被告知这是不好的做法,用户应该使用“访问器”S4 方法,并且开发人员应该为他们的用户提供这些方法。但我想知道是否有人知道这背后的真正交易?
这是一个使用sp
包的示例(但可以推广到任何 S4 类):
r - 如何将来自 nigfit() 的估计参数保存在变量中
我想自动将时间序列返回拟合到 NIG 分布中。使用 fBasics 包中的 nigfit(),我估计了分布的 mu、alpha、beta 和 delta。
这很好用,这意味着 nigfit 绘制了我的参数。但是我想使用估计的参数并将它们保存在变量中。所以我以后可以使用它们。
这行不通。“变量”是类结构fDISTFIT的S4 对象。调用该变量会重新绘制上面 nigfit 的输出。我尝试了以下符号,只得到一个参数:
我在 nigfit 的文档中找不到答案。是否可以将估计的参数保存在变量中?它是如何工作的?