for循环遍历phyloseq对象列表时如何获取每次迭代的列表元素名称?
解决方案
你直接遍历列表元素无法获取对应名称是因为循环变量l仅存储了列表元素的实际值,没有携带名称信息,同时$运算符不支持传入变量做键名匹配,R会将listofsubsets$l识别为查找名称为"l"的元素,自然返回NULL。
你可以选择以下两种常用方案修复:
方案1:直接遍历列表名称
# 循环遍历列表的名称向量,仅处理前2个元素可以改为 names(listofsubsets)[1:2] for(subset_name in names(listofsubsets)) { # 通过名称提取对应的phyloseq对象 current_subset <- listofsubsets[[subset_name]] print(current_subset) # 下游分析逻辑 NMDSname <- paste(subset_name, "NMDS_results", ".txt", sep = "_") }
方案2:遍历列表索引
# 循环遍历列表的索引序列,仅处理前2个元素可以改为 seq_along(listofsubsets)[1:2] for(i in seq_along(listofsubsets)) { # 通过索引提取名称和对应子集 subset_name <- names(listofsubsets)[i] current_subset <- listofsubsets[[i]] print(current_subset) # 下游分析逻辑 NMDSname <- paste(subset_name, "NMDS_results", ".txt", sep = "_") }
内容的提问来源于stack exchange,提问作者DS14
相关产品推荐
相关产品推荐

