如何将其他包生成的相关矩阵转换为corrr的cor_df对象供下游分析
WGCNA双权中相关矩阵转换为corrr包兼容cor_df对象方法
WGCNA包bicor()函数输出的双权中相关结果为基础R matrix类的对称方阵,和corrr包要求的cor_df对象结构差异很小,按以下步骤调整即可直接兼容:
前置格式校验与清理
转换前先清理矩阵多余属性、校验格式,可避免90%以上的兼容报错:
- 剥离WGCNA附加在矩阵上的计算日志、参数等冗余属性,转为纯数值矩阵
- 确认矩阵行名、列名完全一致,为参与相关计算的特征/基因名
- 确认矩阵内数值均在[-1,1]的相关值合理区间,无意外引入的字符型、逻辑型值
对应参考代码:
# 假设bicor输出的矩阵对象名为wgcna_bicor_mat wgcna_bicor_mat <- as.matrix(wgcna_bicor_mat) # 强制同步行名、列名 colnames(wgcna_bicor_mat) <- rownames(wgcna_bicor_mat) # 校验数值范围 stopifnot(min(wgcna_bicor_mat, na.rm = T) >= -1, max(wgcna_bicor_mat, na.rm = T) <= 1)
执行格式转换
直接调用corrr包内置的as_cordf()函数完成转换,注意明确指定对角线参数匹配相关矩阵定义即可:
library(corrr) # 转换为标准cor_df对象 corrr_compatible_obj <- as_cordf( x = wgcna_bicor_mat, diagonal = 1, quiet = TRUE )
常见报错排查
如果转换或后续调用corrr下游函数报错,按以下场景排查:
- 提示非方阵/维度不匹配:检查是否在矩阵取子集时只筛选了行/列其中一个维度,重新做行列同步筛选即可
- 提示列类型异常:大概率是矩阵被意外转为带非数值列的数据框,重新用
as.matrix(..., mode = "numeric")转换即可 - 转换后网络绘图、相关过滤函数报错:检查矩阵中是否存在NA值,可根据分析需求用
na.omit()或值填充处理NA后重新转换
转换有效性校验
转换完成后可通过两个简单操作确认格式符合要求:
- 运行
class(corrr_compatible_obj),返回结果应包含cor_df、tbl_df、data.frame三类 - 运行
corrr::shave(corrr_compatible_obj)可正常生成上/下三角为NA的相关表,即说明格式完全兼容corrr后续分析流程
内容的提问来源于stack exchange,提问作者Eunice Choi
相关产品推荐
相关产品推荐

