You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言data frame中将单列值追加至对应行的列表列?

解决列表列追加对应行数值的问题

你遇到的问题根源在于:当你用map(lst, ~ append(., new_data))时,new_data是整个列的向量(也就是c(1,2,3)),所以每一次append操作都会把整个new_data的所有值都加到列表里,导致每个列表变成了原来的3个元素加上3个新元素,总共6个。

要实现只追加对应行的单个数值,你需要同时并行遍历lst列和new_data列的对应元素,这里用purrr的map2()函数就可以完美解决:

library(tidyverse)
library(purrr)

df <- tibble(abc = letters[1:3], lst = list(1:3, 1:3, 1:3), new_data=1:3)

# 正确的代码
df %>% mutate(lst = map2(lst, new_data, ~ append(.x, .y)))

运行后得到的结果正是你想要的:

# A tibble: 3 x 3
  abc   lst       new_data
  <chr> <list>       <int>
1 a     <int [4]>        1
2 b     <int [4]>        2
3 c     <int [4]>        3

查看每个列表的具体内容:

  • 第一行的lst是1,2,3,1
  • 第二行的lst是1,2,3,2
  • 第三行的lst是1,2,3,3

额外说明

map2()的作用是同时遍历两个长度相同的向量/列,.x对应第一个参数(这里是lst的每个列表元素),.y对应第二个参数(这里是new_data的每个数值),这样就能保证每一行的操作都是基于当前行的两个值。

如果你以后需要处理更多列的并行遍历,也可以用pmap(),写法如下:

df %>% mutate(lst = pmap(list(lst, new_data), ~ append(..1, ..2)))

内容的提问来源于stack exchange,提问作者Alper Yilmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:42:01