移除列表中子列表名称的gene-前缀报错问题求助
移除net列表元素名称中的"gene-"前缀问题解决
为啥原代码报错?
你写的lapply会硬给列表里所有元素改名字,但net里不少元素根本没法这么操作:比如goodSamples是没名字的逻辑向量,dendrograms是hclust对象(当前labels为NULL),还有TOMFiles直接是NULL。强行给这些对象设名称,就会触发那个"尝试给NULL设置属性"的错误。
正确代码
只挑那些有名称、且名称带"gene-"前缀的元素处理,其他元素不动:
net_cleaned <- lapply(net, function(x) { # 先判断当前元素有没有可用的名称属性 if (!is.null(names(x)) && length(names(x)) > 0) { # 把名称里的"gene-"去掉 new_names <- sub("^gene-", "", names(x)) setNames(x, new_names) } else { # 没名称的元素直接原样返回 x } })
可选:给树状图补基因名
如果你的dendrograms里的hclust对象需要显示处理后的基因名(当前labels是NULL),可以单独补一下:
# 假设树状图的基因顺序和colors元素一致 if (!is.null(net_cleaned$dendrograms)) { net_cleaned$dendrograms <- lapply(net_cleaned$dendrograms, function(hc) { hc$labels <- names(net_cleaned$colors) hc }) }
验证效果
跑完代码后,检查下colors的名称是否正常:
head(names(net_cleaned$colors))
内容的提问来源于stack exchange,提问作者user5719890
相关产品推荐
相关产品推荐

