如何使用dplyr递归生成指定结构的DataFrame?
寻找通用生成递归结构tibble的dplyr方法
我有如下数值序列:
values <- seq(1,3)
希望生成如下结构的tibble:
# A tibble: 6 x 2 facet values <dbl> <dbl> 1 1 1 2 2 1 3 2 2 4 3 1 5 3 2 6 3 3
其中facet列表示递归追加的迭代次数。我当前的解决方案是:
facet1 <- values %>% head(1) %>% tibble(facet = 1, values = .) facet2 <- values %>% head(2) %>% tibble(facet = 2, values = .) facet3 <- values %>% head(3) %>% tibble(facet = 3, values = .) bind_rows(facet1, facet2, facet3)
需要更通用的解决方案
当前方案无法适配我的实际场景,因为它依赖于facet序列与values序列一致的特性。以下是更通用的可复现示例,其中values与facet差异较大:
set.seed(42) values <- rnorm(3,0,.2) df_recursive <- tribble(~facet, ~values, 1, 0.27, 2, 0.27, 2, -0.11, 3, 0.27, 3, -0.11, 3, 0.07)
对应的输出结构为:
# A tibble: 6 x 2 facet values <dbl> <dbl> 1 1 0.27 2 2 0.27 3 2 -0.11 4 3 0.27 5 3 -0.11 6 3 0.07
现寻求一种通用的基于dplyr的方法来生成此类递归结构的DataFrame。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

