R语言中如何将下一行wp_data追加至上一行列表并逐行重复?
实现列表的累积追加
你当前的testing数据框中,wp_data列每行是仅包含单个值的列表,需要实现逐行将当前行及之前所有行的wp_data值合并为一个列表的效果,也就是累积式的列表追加。
解决方案代码
library(tidyverse) testing_final <- testing %>% # 提取wp_data列表中的单个值,转为数值向量 mutate(wp_value = map_dbl(wp_data, ~ .x)) %>% # 累积合并:每次把当前值追加到之前的结果列表中 mutate(wp_data = accumulate(wp_value, ~ c(.x, .y))) %>% # 移除临时生成的wp_value列 select(-wp_value)
代码说明
- 提取单个值:
map_dbl(wp_data, ~ .x)将每行wp_data列表里的唯一值提取出来,生成数值列wp_value,方便后续累积操作。 - 累积合并:
purrr::accumulate()会遍历wp_value列,每次把当前元素(.y)追加到之前累积的结果(.x)中,最终每行的wp_data就变成了包含当前及之前所有值的列表。 - 清理临时列:最后用
select(-wp_value)删掉不需要的临时列,得到目标结果。
举个例子,假设原始数据是:
| play_id | wp_data |
|---|---|
| 1 | [0.2] |
| 2 | [0.3] |
| 3 | [0.4] |
运行代码后会得到:
| play_id | wp_data |
|---|---|
| 1 | [0.2] |
| 2 | [0.2, 0.3] |
| 3 | [0.2, 0.3, 0.4] |
完全匹配你期望的输出格式。
内容的提问来源于stack exchange,提问作者bcongelio
相关产品推荐
相关产品推荐

