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

如何在R中用purrr::map为janitor::tabyl设置变量名称

解决方法

问题根源是map传递给tabyl的是单个向量,tabyl处理向量时默认将类别列命名为.。以下两种方法可以快速将列名恢复为原变量名:

方法1:使用imap直接获取变量名并重命名

imap可以同时迭代列的数值和对应的变量名,结合rename和准引用语法替换列名:

library(palmerpenguins)
suppressPackageStartupMessages(library(dplyr))
library(purrr)
suppressPackageStartupMessages(library(janitor))

palmerpenguins::penguins |>
  select(where(~is.factor(.x) | is.character(.x))) |>
  imap(~ tabyl(.x) |> rename(!!.y := .))

执行后,每个结果的第一列都会显示原变量名(比如species、island),而非默认的.。

方法2:使用map2传递变量名列表

先提取变量名,再和列数据一起传入map2完成重命名:

penguin_categorical <- palmerpenguins::penguins |>
  select(where(~is.factor(.x) | is.character(.x)))

var_names <- names(penguin_categorical)

map2(penguin_categorical, var_names, ~ tabyl(.x) |> rename(!!.y := .))

两种方法核心都是通过purrr的迭代函数获取原变量名,再替换tabyl生成的默认列名,最终效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:23:24