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

如何在dplyr的mutate中实现列名与对应行值的拼接?

问题:用dplyr批量修改单元格内容为「列名_行值」

现有数据框:

df <- data.frame(player_id= c(1, 3),
                 goals= c(22,44))

需求:使用dplyr包实现通用方案,修改所有列,使每个单元格内容为「列名_对应行值」,适配任意列数。期望结果如下:

player_idgoals
player_id_1goals_22
player_id_3goals_44

初始尝试代码:

df %>%
  mutate(across(everything(), ~ paste0({.col}, '_', {.row})))

请问应将代码中的.col和.row替换为什么,以实现需求?


解决方案

将.col替换为cur_column(),.row替换为.,修正后的完整代码如下:

df %>%
  mutate(across(everything(), ~ paste0(cur_column(), '_', .)))

关键细节说明

  • cur_column():在across()的匿名函数环境中,该函数能直接获取当前正在处理的列名,对应需求里的「列名」部分。
  • .:在across()的匿名函数中,这个符号代表当前列的每一行具体值,对应需求里的「对应行值」部分。

运行修正后的代码,会得到符合预期的结果:

# 输出结果
  player_id    goals
1 player_id_1 goals_22
2 player_id_3 goals_44

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:15:35