I have a Seurat object that I have run through doubletFinder. I am trying to subset the object based on cells being classified as a 'Singlet' under seurat_object@meta.data[["DF.classifications_0.25_0.03_252"]]
and can achieve this by doing the following:
seurat_object <- subset(seurat_object, subset = DF.classifications_0.25_0.03_252 == 'Singlet') #this approach works
I would like to automate this process but the _0.25_0.03_252
of DF.classifications_0.25_0.03_252
is based on values that are calculated and will not be known in advance. I can figure out what it is by doing the following:
meta_data = colnames(seurat_object@meta.data)[grepl("DF.classification", colnames(seurat_object@meta.data))]
Where meta_data = 'DF.classifications_0.25_0.03_252'
and is a character class.
However, when I try to do any of the following:
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
I get an error that states:
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
I am at loss for how to perform conditional matching with the meta_data
variable. Does anyone have an idea how I can automate the subset process? Many thanks in advance.
This worked.
seurat_object = seurat_object[, seurat_object@meta.data[, meta_data] == "Singlet"]
But I especially don't get why this one did not work:
seurat_object <- subset(seurat_object, subset = seurat_object@meta.data[[meta_data]] == 'Singlet')
If anyone can tell me why the latter did not function I would appreciate it.