我正在使用Seurat对象,在进行了一些质量控制之后,根据所涉及的行是否失败,我有一列名为discard
的元数据列,其中包含TRUE
或FALSE
质量控制,应删除。我该怎么做呢?我已经尝试了subset
的所有不同风格,可以找到文档,但是唯一没有出错的方法是subset(object, object@meta.data$discard)
,它为我提供了仅应丢弃的行的矩阵!! subset(object, subset!=object@meta.data$discard)
对于这种类型的对象显然是不可能的。如何在不重复进行称为“保持”或同样可笑的反向QC的情况下做到这一点?任何帮助表示感谢!
答案 0 :(得分:0)
那么,您要永久删除FALSE数据吗?如果是这样,我认为可以进行快速的逻辑测试。
fecha_esperada_parto
答案 1 :(得分:0)
您添加!
来获取布尔值的补码,下面的示例丢弃了示例中的前10列,即第1 10列。
对于样本,您可以像矩阵一样对其进行子集化:
library(Seurat)
# we use a example dataset
dim(pbmc_small)
[1] 230 80
pbmc_small@meta.data$discard = rep(c(TRUE,FALSE),c(10,70))
newdata = pbmc_small[,!pbmc_small@meta.data$discard]
dim(newdata)
[1] 230 70
table(colnames(pbmc_small)[1:10] %in% colnames(newdata))
FALSE
10
否则,您也可以使用名称作为子集:
id_keep = colnames(pbmc_small)[!pbmc_small@meta.data$discard]
newdata = subset(pbmc_small,cells=id_keep)
dim(newdata)
[1] 230 70