Seurat 对象的条件子集

Conditional subsetting of Seurat object

我有一个Seurat object that I have run through doubletFinder。我正在尝试根据 class 化为 seurat_object@meta.data[["DF.classifications_0.25_0.03_252"]] 下的 'Singlet' 的单元格对对象进行子集化,并且可以通过执行以下操作来实现此目的:

seurat_object <- subset(seurat_object, subset = DF.classifications_0.25_0.03_252 == 'Singlet') #this approach works

我想自动执行此过程,但 DF.classifications_0.25_0.03_252_0.25_0.03_252 是基于计算的值,无法提前获知。我可以通过执行以下操作弄清楚它是什么:

meta_data = colnames(seurat_object@meta.data)[grepl("DF.classification", colnames(seurat_object@meta.data))]

其中 meta_data = 'DF.classifications_0.25_0.03_252' 是一个字符 class.

但是,当我尝试执行以下任一操作时:

seurat_object <- subset(seurat_object, subset = meta_data == 'Singlet') #this approach does not recognize meta_data
seurat_object <- subset(seurat_object, subset = seurat_object@meta.data$meta_data == 'Singlet') #this approach does not work
seurat_object <- subset(seurat_object, subset = seurat_object@meta.data[[meta_data]] == 'Singlet') #this approach does not work

我收到一条错误消息:

Error in FetchData(object = object, vars = unique(x = expr.char[vars.use]),  :   
  None of the requested variables were found: 
Calls: remove_doublets ... subset.Seurat -> WhichCells -> WhichCells.Seurat -> FetchData
Execution halted

我不知道如何与 meta_data 变量进行条件匹配。有谁知道如何使子集过程自动化? 非常感谢

这有效。

seurat_object = seurat_object[, seurat_object@meta.data[, meta_data] == "Singlet"]

但我特别不明白为什么这个不起作用:

seurat_object <- subset(seurat_object, subset = seurat_object@meta.data[[meta_data]] == 'Singlet') 

如果有人能告诉我为什么后者不起作用,我将不胜感激。