dplyr:突变嵌套组无法正常工作

时间:2020-06-15 08:17:03

标签: r dplyr grouping mutate

我想根据数字是否为偶数对它们进行分组,并计算偶数和奇数组。

suppressPackageStartupMessages(library(dplyr))

even <- function(x) return(! x %% 2)

df   <- group_nest(tibble(x = 1:9), even=even(x))

这有效:

# A tibble: 2 x 2
  even                data
  <lgl> <list<tbl_df[,1]>>
1 FALSE            [5 x 1]
2 TRUE             [4 x 1]

现在我想在第三列中添加组数

mutate(df, count=nrow(data))

我希望得到以下结果:

# A tibble: 2 x 3
  even                data  count
  <lgl> <list<tbl_df[,1]>> <int>
1 FALSE            [5 x 1]      5
2 TRUE             [4 x 1]      4
> 

尽管,实际结果与原始数据帧相同,没有添加任何列,没有错误,没什么。

手动检查:

nrow(df[[2]][[1]])
[1] 5

nrow(df[[2]][[2]])
[1] 4

2 个答案:

答案 0 :(得分:0)

可以使用

mutate(df, count=map_dbl(data, nrow))

# A tibble: 2 x 3
  even                data count
  <lgl> <list<tbl_df[,1]>> <dbl>
1 FALSE            [5 x 1]     5
2 TRUE             [4 x 1]     4

答案 1 :(得分:0)

您也可以使用df %>% mutate(count=unlist(lapply(data,nrow)))

返回哪个

  even  data             count
  <lgl> <list>           <int>
1 FALSE <tibble [5 × 1]>     5
2 TRUE  <tibble [4 × 1]>     4