我有以下代码
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.什么是做正确的方式?
我们可以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)