R语言使用enrichR包时for循环查询基因集返回空结果的问题
问题原因
你的猜测是正确的,循环中i遍历得到的是字符串形式的基因列表名称(比如"yellow"),而不是yellow变量存储的实际基因向量,相当于你把"yellow"这个字符串本身作为基因名提交给了enrichR,自然返回空结果。
修复方案
方法1:直接修改原有for循环
用get()函数将字符串转换为对应名称的变量对象即可,修改后的代码如下:
for(i in uniquemods){ assign(paste0(i,"_enrich"), enrichr(get(i), databases = "KEGG_2019_Human")) }
运行上述代码即可得到和单次运行一致的富集结果。
方法2:更推荐的列表存储方案
使用assign在全局环境批量生成变量后续处理不便,更建议将所有富集结果存储在一个命名列表中,后续取用时更方便,代码如下:
# 批量运行富集,结果存入命名列表 enrich_results <- lapply(uniquemods, function(color){ enrichr(get(color), databases = "KEGG_2019_Human") }) # 给列表设置名称,方便后续取用 names(enrich_results) <- paste0(uniquemods, "_enrich") # 取用示例:获取yellow的富集结果 yellow_enrich <- enrich_results[["yellow_enrich"]]
内容的提问来源于stack exchange,提问作者Diogo de Moraes
相关产品推荐
相关产品推荐

