dplyr + purr:n()是指map()组,而不是本地组?

时间:2017-06-22 22:47:02

标签: r dplyr purrr

我有一个父数据集,它嵌套了多个数据集(即每个单元格都是一个tibble的tibble),我想要每个数据集,找到每个组的行数。使用单个数据集的标准方法就是group_by(var) %>% mutate(nrow=n())

但是现在我对多个map()调用的数据集执行此操作,看起来n()调用是指map()进行的(隐式)分组,而不是显式分组在我group_by的本地数据集中?

单个数据集的标准方式,n()返回50:

iris %>%
  group_by(., Species) %>%
  mutate(nrow=n())

数据集数据集:

 df <- data_frame(name=c("a", "b"), Data=list(iris, iris))
 df2 <- df %>%
          mutate(Data2=map(Data, ~group_by(., Species) %>%
                 mutate(nrow=n()) %>%
                 ungroup()))

但现在n()返回了2?

df2[1,]$Data2[[1]]

2 个答案:

答案 0 :(得分:2)

如果您在checkBox1.AutoSize = false; checkBox1.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; checkBox1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 之外定义函数,它可以正常工作(我假设这个输出就是你想到的......)

mutate

答案 1 :(得分:0)

自版本0.7.0以来可用的另一个选项是使用add_count(),它不会与map()冲突,并且无论如何都会简化代码:

# standard case:
iris %>%
  add_count(Species)

## df of df:
df2 <- df %>%
  mutate(Data2=map(Data, ~add_count(., Species)))