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

在R语言mutate中使用purrr::pmap计算数据框前3列行和的问题

用purrr::pmap计算前3列行和的正确写法

先拆解你之前两种写法失败的问题:

  • 第一种pmap(select(., 1:3), ~ sum(.)):pmap会把每行的3个列值拆成独立参数传给lambda函数,这里的.仅代表第一个参数(也就是第一列的值),相当于只对第一列求和,没纳入后两列。
  • 第二种pmap(., ~ sum(.[1:3])):lambda里的.同样只对应第一个参数(mtcars的第一列mpg),单个数值的[1:3]会超出长度返回NA,所以结果全是NA。

下面是几种可行的pmap解决方案:

写法1:用...捕获所有参数并求和

library(tidyverse)

mtcars %>% 
  mutate(new = pmap_dbl(select(., 1:3), ~ sum(c(...))))

用pmap_dbl直接返回数值向量(避免生成list列),c(...)把每行传入的3个参数(对应前3列的值)拼成向量后求和。

写法2:打包参数为list后求和

mtcars %>% 
  mutate(new = pmap_dbl(select(., 1:3), ~ sum(list(...))))

list(...)会把每行的3个参数打包成列表,sum可直接对列表内的数值求和,原理和写法1一致。

写法3:直接指定前3个参数求和(无需提前select)

mtcars %>% 
  mutate(new = pmap_dbl(., ~ sum(c(..1, ..2, ..3))))

..1、..2、..3分别指代每行的第1、2、3列参数,组合后求和即可跳过提前筛选列的步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:55:21