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

如何计算R中分组后嵌套列表列的向量长度?

计算列表列中每个向量的长度

嘿,这事儿很容易搞定!既然你已经用tidyverse生成了包含向量列表的summary列,你可以用purrr(tidyverse的核心成员之一)里的map_int()函数来逐个提取每个列表元素的长度。

具体操作代码

你只需要在现有数据框上添加一个mutate()步骤就行:

library(tidyverse)

# 你的原始代码
dat <- iris %>% 
  group_by(Species) %>% 
  summarise(summary = list(fivenum(Petal.Width)))

# 计算每个向量的长度
dat <- dat %>% 
  mutate(vec_length = map_int(summary, length))

dat

输出结果

运行后你会看到新增了vec_length列,因为fivenum()固定返回5个统计值,所以每一行的长度都是5:

#> # A tibble: 3 x 3
#>   Species    summary    vec_length
#>   <fct>      <list>          <int>
#> 1 setosa     <dbl [5]>           5
#> 2 versicolor <dbl [5]>           5
#> 3 virginica  <dbl [5]>           5

额外说明

如果你的列表列里的向量长度不固定,这个方法依然完全适用——map_int()会自动遍历每个列表元素,应用length()函数并返回整数向量。当然你也可以用map_dbl()或者map(),但map_int()在这里是最贴合需求的,因为长度是整数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:55:18