【发布时间】:2015-07-06 22:05:44
【问题描述】:
我有一个带有三个插槽的 S4 对象“DATA” - 结构如下所示(抱歉,我不知道如何创建示例,所以这是我正在使用的简化结构)
---坐标:@coo (e.g. 'Name_A') 是一个 2x20 矩阵,其中有 6 个矩阵的名称
---名称:@names Name_A Name_B Name_C Name_D Name_E Name_F 并且每个名称都有两个因素之一
---因子:@fac Factor_A Factor_B
我如何在@fac = Factor_A 的地方子集(选择)@coo 数据?我已经使用 [] 表示法和 getElement 尝试了许多数据框类型选择的组合,但这显然是不正确的。谢谢。
编辑 可重复的示例 - 我知道这是一种可怕的做法......
library(Momocs)
您读入的输入数据文件如下所示(称为“test.chc”,这是另一个应用程序的输出)
[1] "sampleA 322 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[2] "sampleB 231 5 4 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[3] "sampleC 489 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[4] "sampleD 323 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[5] "sampleE 381 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[6] "sampleF 342 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[7] "sampleG 327 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[8] "sampleH 336 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[9] "sampleI 147 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
[10] "sampleJ 654 6 5 4 4 4 4 4 6 5 4 4 4 6 0 0 0 6 6 4 6 5 4 4 4 4 3 2 4 3 2 4 4 -1"
和
grps<- data.frame(Groups=(rep(letters[1:2],5)))
c.S4obj <-chc2Coo("test.chc")
c.S4obj@fac <-grps
str(c.S4obj)
那么,问题是,如何选择特定组(a 或 b)的数据并返回 S4 类对象?
【问题讨论】:
-
这是您定义的 S4 类吗?您想要返回相同类型的 S4 类还是只想要数据?看起来
@coo有两列,@fac有两个值,@fac的每个值是否对应@coo的列?如果您提供reproducible example,会更容易提供帮助。 -
好的,以我知道的最佳方式添加了一个示例 - 我同意这并不理想。回答你的问题,是的,应该返回一个 S4 类对象,在 Momocs 库中保留用于下游分析的结构。