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

如何用%>%管道结合split函数将R的DataFrame转为分组列表?

在R中用管道将DataFrame转为分组列表

先回顾你的原始数据和目标:

df <- data.frame(var1=c("A","A","A","B","B","C"),var2=seq(1,6))

目标是得到和split(df$var2, df$var1)完全一致的分组列表,下面是几种用%>%管道实现的方法:

方法1:基础R split + 管道(用大括号调整参数)

%>%默认会把左侧数据框作为右侧函数的第一个参数,直接写df %>% split(.$var1)会拆分整个数据框,而非var2列。用大括号可以打破这个默认逻辑,手动指定split的两个参数:

library(magrittr) # 若已加载tidyverse则无需单独加载

df %>% {split(.$var2, .$var1)}

运行结果:

$A
[1] 1 2 3

$B
[1] 4 5

$C
[1] 6

方法2:dplyr + deframe(符合tidyverse风格)

用分组汇总把每组的var2转为列表,再用deframe把分组变量转为列表名称:

library(dplyr)

df %>%
  group_by(var1) %>%
  summarise(data = list(var2)) %>%
  tibble::deframe()

该方法输出和split完全一致,且更贴合tidyverse的操作习惯。

方法3:dplyr group_map + 命名

用group_map提取每组的var2列,再手动给列表命名:

library(dplyr)

df %>%
  group_by(var1) %>%
  group_map(~ .x$var2) %>%
  setNames(unique(df$var1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:42:36