问题标签 [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 - S4 构造函数和原型
浏览 Hadley Wickham 的 S4 wiki: https ://github.com/hadley/devtools/wiki/S4
我们如何为 Person 设计一个构造函数(像这样)
不这样做:
r - 如何在 R 中拆分和写入 S4 对象的文件
我有一个 S4 类的对象,如下所示:
从这个对象,我想生成一个包含 Slot Seq | 列的文件。插槽字符 | 插槽开始 | 槽尾 | 槽钢 | 插槽 seqID | 插槽位置 | 插槽 pval | 插槽 fastaHeader。
如何从上面的 S4 对象生成和编写这样的 .txt 文件?
r - 循环遍历 R 中 S4 对象中的列
我正在尝试使用snpStats包执行关联。
我有一个名为“plink”的 snp 矩阵,其中包含我的基因型数据(作为 $genotypes、$map、$fam 的列表),并且 plink$genotype 具有:SNP 名称作为列名(2 个 SNP)和主题标识符作为行名:
可以复制以下 ped 和 map 文件并分别将它们保存为“plink.ped”和 plink.map 来复制 plink 数据集:
然后以这种方式使用plink:
我还有一个表型数据框,其中包含我想与基因型关联的结果(结果 1、结果 2、...),即:
当我这样做时,该关联适用于单个术语:(使用公式“snp.rhs.test”):
我的问题是,我如何遍历结果?这种类型的数据似乎与所有其他类型的数据不同,我在操作它时遇到了麻烦,所以如果您有一些教程的建议可以帮助我理解如何执行此操作和其他操作(例如子集 snp.matrix),我将不胜感激以数据为例。
这是我为循环尝试过的:
Error in x$terms : $ operator is invalid for atomic vectors
然后我尝试了这个:
Error in eval(expr, envir, enclos) : object 'bmi' not found
像往常一样感谢您的帮助!-F
r - 访问 S4 函数超类的插槽
我可以创建一个“函数”的 S4 超类并从函数调用中访问该对象的插槽吗?目前我有:
现在我真正想要的是函数是 x 到自身 @pow 插槽的幂,所以如果我这样做:
我得到立方体,如果我这样做:
我得到正方形。
但我不知道如何像在 Python 中那样获得对“自我”的引用。我猜它在环境中的某个地方......
以下是它在 python 中的工作方式:
再简单不过了,我什至不必做“进口反重力”....
oop - 在 R 的 S4 中定义具有多个可选空插槽的类的有效方法?
我正在构建一个包来处理多达 4 种不同类型的数据。这些类型中的每一种都是矩阵、data.frame 或树形式的合法类。根据处理数据的方式和其他实验因素,其中一些数据组件可能会丢失,但能够将此信息存储为特殊类的实例并具有识别不同组件的方法仍然非常有用数据。
方法一:
我已经尝试过一种看起来像嵌套树的增量继承结构,其中每种数据类型组合都有自己明确定义的类。这似乎很难在未来扩展额外的数据类型,并且对于新开发人员来说学习所有类名也是一个挑战,无论这些名称组织得多么好。
方法二:
第二种方法是创建一个包含所有 4 种数据类型的插槽的“主类”。为了让缺失数据的实例的槽为 NULL,似乎有必要首先在NULL
类和新数据类型类之间定义一个虚拟类联合,然后使用虚拟类联合作为相关的预期类进入大师班。这是一个示例(假设每个数据类型类都已定义):
所以这个问题可以改写为:
这些方法是否有更有效和/或更灵活的替代方案?
这个例子是从一个关于将 slot 的默认值设置为 NULL的 SO question 的答案修改而来的。这个问题的不同之处在于,我有兴趣了解 R 中创建具有在需要时可以为空的插槽的类的最佳选项,尽管在所有其他非空情况下都需要特定的复杂类。
r - 如何编写强制方法
我有一堆定制的参考类,想为其中一些编写强制方法。如果函数调用如下所示,那就太好了:
关键部分在哪里...
,因为有时我想为某些强制传递额外的东西(见do.deep = TRUE/FALSE
下文。
但是,为了做到这一点,我是否需要实现一种接受to
参数的“转换器”,尝试实例化指定类的空对象,to
然后调用“常规”方法调度?或者,还有更好的方法?
您将在下面找到我当前的解决方案。它有效,但我“失去”了强制类的选项,character"
因为这个类用于处理常规调度程序的事情,并且to = "character
会导致无限递归。另外,这是很多开销。
编辑 2011-12-02
当然setAs
将是第一个要检查的地址。但是 arg def
in指定的函数setAs
只能接受一个参数,这对我来说通常太死板了。例如,我看不到如何do.deep = TRUE/FALSE
在使用setAs
.
类定义
通用方法
中间变压器
强制方法“MyVirtual”到“list”
测试运行
r - 为 S3 类定义一个 show 方法
我很惊讶地发现 show 是 S4 通用的,而且我找不到使用 S3 调度来使 show 功能工作的方法。一个简单的演示:
这里没有 S3 调度...
你觉得呢?
对于打印,它可以工作。
我有很好的理由继续使用 S3(其中很大一部分是开销最小化,因为这些对象将广泛用于引导程序)。我应该如何在这里定义不同的显示和打印方法?
r - 如果已经存在同名函数,则定义 S4 方法
我有一个函数myFunction,我需要创建一个同名的 S4 方法(不要问我为什么)。
我想保留myFunction的旧功能。
有没有办法保留我的旧功能?
我宁愿不为这个旧函数设置一个泛型,因为签名可能非常不同......
r - 获取 S4 对象的插槽值?
所以我在 R 中有一个 spatialpolygons 对象;但我不确定为什么我无法从中检索“区域”插槽。
这是我的 R 会话:
r - 为什么不推荐使用多重继承?
我在 R 中创建 S4 类。
我在https://github.com/hadley/devtools/wiki/S4中阅读
请注意,S4 支持多重继承,但使用时应格外小心,因为它会使方法查找变得极其复杂。
什么是方法查找,为什么多重继承更复杂?