【问题标题】:Subset by samples for an ExpressionSet objectExpressionSet 对象的样本子集
【发布时间】:2012-03-03 05:20:55
【问题描述】:

我有一个包含 100 个样本的 ExpressionSet 对象:

> length(sampleNames(eset1))
100

我还有一个包含 75 个样本的名称向量(不是数据本身):

> length(vecOf75)
75

如何根据 75 个样本名称对eset1 进行子集化(并保存)?也就是说,我想忽略eset1 中那些名称未在vecOf75 中列出的样本。请记住,与 75 个样本名称对应的某些样本可能不在eset1 中。因此,

> length(sampleNames(eset1))

现在应该给予一些东西

【问题讨论】:

    标签: r bioconductor


    【解决方案1】:

    一个 ExpressionSet 可以像矩阵一样是子集,所以也许

    eset2 = eset1[, sampleNames(eset1) %in% vecOf75]
    

    或者如果all(vecOf75 %in% sampleNames(eset1))那么只是

    eset1[, vecOf75]
    

    不确定“保存”是什么意思; save(eset2, "some_file.rda") 或提取组件exprs(eset2)pData(eset2) 等,并使用write.table 和其他标准R 函数。

    【讨论】:

    • 通过“保存”,我的意思是用它的子集更新eset1,而不是创建一个新的 RData 对象,例如eset2。谢谢。
    【解决方案2】:

    eset1 <- vecOf75[vecOf75 %in% eset1] 这表示,将 vecOf75 的 vecOf75 保存到 eset1 中,其中 vecOf75 在 eset1 中

    一个使用数字的简单例子:

    eset1 <- sample(1:100)
    vecOf75 <- sample(1:200,75)
    eset1 <- vecOf75[vecOf75 %in% eset1]
    

    或者,您可以使用subset(),但是习惯于通过 ']' 进行子集化以编程方式更有用。

    subset(vecOf75, vecOf75 %in% eset1)

    【讨论】:

    • 这不适用于 ExpressionSet 对象(Bioconductor 包)。
    • 如果您更深入地查看对象str(obj),我相信您可以找到字符名称的存储位置并使用一些 vecof75[vecOf75$storage %in% 调整上面的代码eset1$storage] 或类似的东西。
    • 另外,vecOf75 仅包含列的名称(或 ExpressionSet 对象的示例)。它不包含实际数据。
    • 对不起,我不熟悉这个对象。但是,方法是一样的。在这些变量中的每一个内部都有一些您想要比较的元素。您必须深入研究对象并决定要根据哪个变量进行子集化。方法 x
    • 他们在这里所做的差不多,例如:stackoverflow.com/questions/5593931/expressionset-subsetting
    猜你喜欢
    • 2011-02-16
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2018-08-11
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多