映射嵌套列并将数据框扩展到新的嵌套列
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]>
我正在尝试使用来自另一个嵌套列的最小值和最大值的数据创建一个新的嵌套列。
如果我通过 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]>