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

如何用R的dplyr将指定列汇总为列表并保留原列

解决方案

可以使用dplyr的rowwise()和c_across()函数实现需求,具体代码如下:

library(tidyverse)

df = tibble(gene=c("geneA","geneB","geneC"),
            dat1=c(100,100,50),
            dat2=c(50,100,20),
            dat3=c(10,20,30))

# 生成包含列表列的结果数据框
df_result <- df %>%
  rowwise() %>%
  mutate(data = list(c_across(-gene))) %>% # -gene 表示排除gene列,选取其余所有列
  ungroup()

# 查看结果
df_result

运行后输出结果:

#> # A tibble: 3 × 5
#>   gene   dat1  dat2  dat3 data     
#>   <chr> <dbl> <dbl> <dbl> <list>   
#> 1 geneA   100    50    10 <dbl [3]>
#> 2 geneB   100   100    20 <dbl [3]>
#> 3 geneC    50    20    30 <dbl [3]>

代码说明

  • rowwise():将数据框转换为行分组模式,确保后续操作按行执行
  • c_across(-gene):选取除gene列外的所有列的当前行值,组合成向量
  • list():将向量包装为列表元素,生成列表类型的新列data
  • ungroup():取消行分组,恢复数据框的默认分组状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:50:49