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

如何使用purrr::map_df()为生成的新变量添加rank后缀?

解决map_df生成变量名重复并添加后缀的问题

这里提供几种tidyverse风格的实用方案,帮你给生成的排名列添加_rank后缀:

方法1:用imap_df直接命名新列

imap_df可以同时获取列的名称和值,方便直接给新列指定带后缀的名称:

library(tidyverse)
# 生成随机数据
dat <- tibble(
  x_1 = runif(10),
  x_2 = runif(10),
  x_3 = runif(10)
)
# 生成带后缀的排名列并合并
rank_cols <- dat |> imap_df(~ rank(.x) |> set_names(str_c(.y, "_rank")))
dat <- bind_cols(dat, rank_cols)

方法2:先计算排名再批量重命名

先用map_df生成排名结果,再用rename_with批量修改列名:

rank_cols <- dat |> map_df(rank) |> 
  rename_with(~ str_c(.x, "_rank"))
dat <- bind_cols(dat, rank_cols)

方法3:用mutate + across(最简洁推荐)

直接在原数据框中添加新列,across的.names参数可以通过模板自动生成新列名:

dat <- dat |> 
  mutate(across(everything(), rank, .names = "{.col}_rank"))

这里{.col}会自动替换为原列名称,最终生成x_1_rank、x_2_rank这类带后缀的列,无需额外合并步骤,更符合tidyverse的操作习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:17:04