【发布时间】:2018-05-18 12:48:26
【问题描述】:
我有一个带有列表列的小标题,其中每个元素都包含一个长度为 2 的列表。我尝试使用 unlist()、unnest() 和 flatten() 和其他各种组合,但没有运气得到我想要的结果。
一个最小的工作示例如下:
df <- tibble(x = c('A', 'B'),
preds = list(list(Phi = data.frame(time = 1:2, estimate = c('y1', 'y2')),
p = data.frame(time = 1:2, estimate = c('y3', 'y4'))),
list(Phi = data.frame(time = 1:2, estimate = c('y5', 'y6')),
p = data.frame(time = 1:2, estimate = c('y7', 'y8')))))
预期结果:
output <- tibble(x = rep(c('A', 'B'), each = 4),
grp = c(rep(c('Phi', 'p'), each = 2 ), rep(c('Phi', 'p'), each = 2 )),
time = rep(1:2, 4),
estimate = c('y1', 'y2', 'y3', 'y4', 'y5', 'y6', 'y7', 'y8'))
下面的代码让我分道扬镳,我可以轻松地包含其他列,但它不正确。
df$preds %>% flatten_df()
经过一天的谷歌搜索后,我仍然卡住了。请指出我的方向......非常感谢!!!
【问题讨论】:
-
试试
df %>%mutate(preds = map(preds, bind_rows, .id = 'grp')) %>%unnest -
@KevinArseneau 无意冒犯你。我只是觉得这不是一个完整的答案