如何计算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
相关产品推荐
相关产品推荐

