如何在R中将Fisher检验的比值比列表转为数值向量并合并入数据框
解决方案
第一步:提取比值比的纯数值
你的fisher_or是列表,每个元素是带"odds ratio"命名的单元素数值向量,用下面几种方法都能快速提取纯数值:
- unlist 极简法
直接解包列表并转成数值,NA值会被正确保留:
fisher_or_numeric <- as.numeric(unlist(fisher_or))
- sapply 稳妥法
如果需要更明确地处理NA(避免意外报错),用sapply遍历每个列表元素:
fisher_or_numeric <- sapply(fisher_or, function(x) { if (!is.na(x)) x else NA_real_ })
第二步:合并成edge_table
拿到纯数值的OR向量后,直接和ids_df、fisher_pvalues合并即可:
基础R写法
edge_table <- cbind(ids_df, fisher_odds_ratio = fisher_or_numeric, fisher_pvalue = fisher_pvalues)
Tidyverse写法(若使用dplyr)
library(dplyr) edge_table <- ids_df %>% mutate( fisher_odds_ratio = fisher_or_numeric, fisher_pvalue = fisher_pvalues )
这样得到的edge_table就是包含原ids_df数据、比值比和p值的完整数据框。
内容的提问来源于stack exchange,提问作者Aryh
相关产品推荐
相关产品推荐

