You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:50:24