R语言:将by()函数结果转为含chisq与p.value的数据框
解决方案
1. 将by输出的单p值结果转为目标数据框
你用do.call(rbind, list(send))得到矩阵后,可通过以下代码转换为带snp_id列的标准数据框:
# 将by的结果转为数据框 result_df <- as.data.frame(send) # 提取行名作为snp_id列 result_df$snp_id <- rownames(result_df) # 重命名列并调整顺序 colnames(result_df)[1] <- "pvalue" result_df <- result_df[, c("snp_id", "pvalue")] # 清除行名 rownames(result_df) <- NULL
2. 用data.table同时生成p.value和chisq列
针对返回列表的catt_2函数,可直接在data.table的分组计算中提取列表中的两个值,生成对应列:
library(data.table) setDT(merged_df_normal) # 分组计算并直接返回两列 result_dt <- merged_df_normal[, { # 调用函数获取结果列表 test_res <- catt_2(is_sever, encoding) # 返回包含chisq和p.value的数据框 .(chisq = test_res$chisq, pvalue = test_res$p.value) }, by = snp_id]
执行后result_dt就是你需要的包含snp_id、pvalue、chisq三列的数据表。
内容的提问来源于stack exchange,提问作者Eliza Romanski
相关产品推荐
相关产品推荐

