如何在嵌套tibble中添加父表的fx列数据?
解决方案
要把父表的fx列值添加到对应的嵌套data表中,核心是让每个嵌套表关联到当前行的fx值,推荐用purrr::map2()同时遍历data和fx两列,具体代码如下:
test3 <- test1 |> dplyr::mutate(data = purrr::map2(data, fx, \(x, y) x |> dplyr::mutate(fx = y))) # 验证结果:查看company2的嵌套数据,已添加fx列且值为USD test3$data[[2]]
为什么用map2而不是map?
你之前用的map()只针对单个列(data)迭代,而map2()支持同时传入两个列(data和fx):
- 迭代函数里的
x代表当前行的data嵌套表 y代表当前行的fx值
这样就能精准把对应行的fx值添加到嵌套表里。
另一种方法:用rowwise()
如果更习惯dplyr的行式操作,也可以用rowwise()实现:
test4 <- test1 |> dplyr::rowwise() |> dplyr::mutate(data = list(dplyr::mutate(data, fx = fx))) |> dplyr::ungroup()
这个方法会逐行处理数据,把当前行的fx值添加到该行的data嵌套表中,最后记得用ungroup()取消行分组状态。
内容的提问来源于stack exchange,提问作者cg1979
相关产品推荐
相关产品推荐

