You need to enable JavaScript to run this app. R语言如何按Gene字段对基因表达数据集所有观测列执行聚合求和
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何按Gene字段对基因表达数据集所有观测列执行聚合求和

错误原因

你代码报错的核心问题是res$dataColumns的写法错误:R会将dataColumns识别为res数据集的某一列名,而不是你预先定义的列名字符串向量,因此无法正确选中需要聚合的166个观测列,最终触发no rows to aggregate的报错。


解决方案

方案1:基础R aggregate 原生写法(无需额外安装包)

正确的多列选择语法是res[, dataColumns],修改后代码如下:

# 预先定义需要聚合的观测列
dataColumns <- c("V1","V2","V3","V4","V5","V6","V7","V8","V9","V10","V11","V12","V13","V14","V15","V16","V17","V18","V19","V20","V21","V22","V23","V24","V25","V26","V27","V28","V29","V30","V31","V32","V33","V34","V35","V36","V37","V38","V39","V40","V41","V42","V43","V44","V45","V46","V47","V48","V49","V50","V51","V52","V53","V54","V55","V56","V57","V58","V59","V60","V61","V62","V63","V64","V65","V66","V67","V68","V69","V70","V71","V72","V73","V74","V75","V76","V77","V78","V79","V80","V81","V82","V83","V84","V85","V86","V87","V88","V89","V90","V91","V92","V93","V94","V95","V96","V97","V98","V99","V100","V101","V102","V103","V104","V105","V106","V107","V108","V109","V110","V111","V112","V113","V114","V115","V116","V117","V118","V119","V120","V121","V122","V123","V124","V125","V126","V127","V128","V129","V130","V131","V132","V133","V134","V135","V136","V137","V138","V139","V140","V141","V142","V143","V144","V145","V146","V147","V148","V149","V150","V151","V152","V153","V154","V155","V156","V157","V158","V159","V160","V161","V162","V163","V164","V165","V166")
# 按Gene列分组,对所有观测列求和
trans_grouped <- aggregate(res[, dataColumns], by=list(Gene=res$Gene), FUN=sum)

如果你不想手动写全166个V开头的列名,还可以用正则匹配自动筛选,简化代码:

# 自动匹配所有以V开头的观测列,无需手动枚举
dataColumns <- grep("^V\\d+$", colnames(res), value = TRUE)
trans_grouped <- aggregate(res[, dataColumns], by=list(Gene=res$Gene), FUN=sum)

方案2:dplyr包写法(20万行大数据量运行效率更高)

针对你20万行的大型数据集,更推荐使用dplyr包做聚合,运行速度远高于基础R的aggregate:

# 未安装包先运行:install.packages("dplyr")
library(dplyr)
trans_grouped <- res %>%
  group_by(Gene) %>%
  # 对所有V开头的观测列求和,na.rm=TRUE可跳过空值,不需要可以删除
  summarise(across(starts_with("V"), sum, na.rm = TRUE)) %>%
  ungroup() %>%
  as.data.frame()

内容的提问来源于stack exchange,提问作者Jed Lye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:54:01