如何用tidyverse优雅生成多周期同结构的dataframe?
Tidyverse下更优雅的实现方式
你可以用两种更简洁的方式替代循环,完全符合tidyverse的风格:
方法一:使用crossing()(推荐)
先定义不含周期列的基础数据,再通过交叉连接生成所有周期的组合,一步到位:
library(tidyverse) # 定义基础数据结构(无需提前加period列) base_tbl <- tibble(A = c(1, 2)) # 生成1到20周期的完整数据集 mytibble <- crossing(base_tbl, period = 1:20)
方法二:使用purrr::map_dfr()
如果已经有带初始周期的tibble,可以用map_dfr()遍历周期序列,自动合并结果:
library(tidyverse) mytibble0 <- tibble(A = c(1, 2), period = 1) # 遍历1到20的周期,生成并合并数据 mytibble <- map_dfr(1:20, ~ mytibble0 %>% mutate(period = .x))
这两种方式都避免了手动循环拼接,代码更简洁易读,也符合tidyverse的向量化/函数式编程思路,比原循环更优雅。
内容的提问来源于stack exchange,提问作者arnyeinstein
相关产品推荐
相关产品推荐

