映射嵌套列并将数据框扩展到新的嵌套列

Mapping over a nested column and expanding a data frame into a new nested column

我正在尝试使用来自另一个嵌套列的最小值和最大值的数据创建一个新的嵌套列。

如果我通过 Species 嵌套 IRIS 数据,并希望通过 Petal.Length 的最小值和最大值为每个 Species 创建一个新的嵌套数据框如何我会做吗?

到目前为止我的代码,创建一个函数来创建新的 data.frame 或 expand.grid,然后使用 mutate(...map(...

应用它

Code/Data:

func = function(input){
  data.frame(
    min_to_max = seq(
      from = min(.x$Petal.Length),
      to = max(.x$Petal.Length),
      by = 1
    )
  )
}

iris %>% 
  group_by(Species) %>% 
  nest() %>% 
  mutate(
    expandDF = map(data, ~ func(.x))
  )

该函数应该匹配使用的参数名称,即 input 而不是 .x

func <- function(input){
     data.frame(
       min_to_max = seq(
         from = min(input$Petal.Length),
         to = max(input$Petal.Length),
         by = 1
       )
     )
   }

-测试

iris %>% 
  group_by(Species) %>% 
  nest() %>% 
  mutate(
    expandDF = map(data, ~ func(.x))
  ) %>% ungroup

-输出

# A tibble: 3 × 3
  Species    data              expandDF    
  <fct>      <list>            <list>      
1 setosa     <tibble [50 × 4]> <df [1 × 1]>
2 versicolor <tibble [50 × 4]> <df [3 × 1]>
3 virginica  <tibble [50 × 4]> <df [3 × 1]>

我们也可以在不使用 map 的情况下做到这一点,即使用 nest_by

iris %>%
  nest_by(Species) %>%
  mutate(expandDF = list(data.frame(min_to_max = 
   seq(from = min(data$Petal.Length), to = max(data$Petal.Length))))) %>%
 ungroup
# A tibble: 3 × 3
  Species                  data expandDF    
  <fct>      <list<tibble[,4]>> <list>      
1 setosa               [50 × 4] <df [1 × 1]>
2 versicolor           [50 × 4] <df [3 × 1]>
3 virginica            [50 × 4] <df [3 × 1]>