【问题标题】:Subset an S4 object in R在 R 中设置 S4 对象的子集
【发布时间】: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 库中保留用于下游分析的结构。

标签: r subset s4


【解决方案1】:

Momocs 现在使用 S3 类,并且更容易检索数据。如果你还在做形态测量,那么值得看看1.0.0 version on CRANits vignette

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 2020-06-08
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2011-09-10
    • 2015-11-10
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多