【发布时间】:2020-06-21 10:44:36
【问题描述】:
我正在努力在 map() 函数中使用 spread()。这是一个示例数据:
data1 <- tibble(size = c("1", "2", "3", "4"),
color = c("blue", "green", "yellow", "black"))
data2 <- tibble(size = c("7", "3", "10", "1"),
color = c("orange", "yellow", "red", "white"))
dataList <- list(data1, data2)
我想用我的列表实现的目标与使用单个 tibble 的目标类似:
spread(data1, size, color)
# A tibble: 1 x 4
`1` `2` `3` `4`
<chr> <chr> <chr> <chr>
1 blue green yellow black
但我想以某种方式将这个 spread() 应用到我列表的两个小标题上,使用 map()。但我找不到正确的方法来做到这一点......知道吗?非常感谢你的帮助!
【问题讨论】:
-
map(dataList, ~ spread(., size, color))维护列表中的展开框架,这是您要找的吗? (或 tidyr 中的较新变体:map(dataList, ~ pivot_wider(., names_from = "size", values_from = "color"))。) -
您熟悉使用
purrr函数吗?如果您的重塑工作如您所愿,您应该能够将您已经获得的内容包装在函数/公式符号中。您想要的输出是什么:重塑的数据框列表,还是来自重塑各个数据框的单个数据框? -
是的,我想要的输出是一个重构数据的列表!