如何计算列表列中的向量长度(嵌套)

sca*_*der 2 r dplyr tidyverse

我有以下代码

library(tidyverse)
dat <- iris %>% 
    group_by(Species) %>% 
    summarise(summary = list(fivenum(Petal.Width))) 

dat
#> # A tibble: 3 x 2
#>   Species    summary  
#>   <fct>      <list>   
#> 1 setosa     <dbl [5]>
#> 2 versicolor <dbl [5]>
#> 3 virginica  <dbl [5]>
Run Code Online (Sandbox Code Playgroud)

基本上我使用了Iris数据,按物种分组然后计算fivenum().

我想要做的只是简单地计算汇总值的长度:这是我尝试过的但它没有产生我期望的东西:

dat %>% 
  mutate(nof_value = length(summary))

# A tibble: 3 x 3
#  Species    summary   nof_values
#  <fct>      <list>         <int>
#1 setosa     <dbl [5]>          3
#2 versicolor <dbl [5]>          3
#3 virginica  <dbl [5]>          3
Run Code Online (Sandbox Code Playgroud)

nof_values都应该等于5.什么是做正确的方式?

Ron*_*hah 7

我们可以lengths用来计算嵌套列表的长度

library(tidyverse)
dat %>%
   mutate(nof_values = lengths(summary))

#  Species    summary   nof_values
#  <fct>      <list>         <int>
#1 setosa     <dbl [5]>          5
#2 versicolor <dbl [5]>          5
#3 virginica  <dbl [5]>          5
Run Code Online (Sandbox Code Playgroud)

其基数为R的等价物

dat$nof_values <- lengths(dat$summary)
Run Code Online (Sandbox Code Playgroud)

旁注:length不同于lengths

length(dat$summary)
#[1] 3

lengths(dat$summary)
#[1] 5 5 5
Run Code Online (Sandbox Code Playgroud)