I think the issue is related to the fact that the factor status is checked too early in the ModuleTraitCorrelation function.
ModuleTraitCorrelation <- function(
seurat_obj,
traits,
group.by = NULL,
features = 'hMEs',
cor_method = 'pearson',
subset_by = NULL,
subset_groups = NULL,
wgcna_name = NULL,
...
){
if(is.null(wgcna_name)){wgcna_name <- seurat_obj@misc$active_wgcna}
CheckWGCNAName(seurat_obj, wgcna_name)
# get MEs, module data from seurat object
if(features == 'hMEs'){
MEs <- GetMEs(seurat_obj, TRUE, wgcna_name)
} else if(features == 'MEs'){
MEs <- GetMEs(seurat_obj, FALSE, wgcna_name)
} else if(features == 'scores'){
MEs <- GetModuleScores(seurat_obj, wgcna_name)
} else{
stop('Invalid feature selection. Valid choices: hMEs, MEs, scores, average')
}
if(!is.factor(group.by)){
stop('group.by variable must be a factor in the seurat object metadata.')
}