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

R语言使用dplyr编写列名转首字母大写函数报错如何解决

问题根因

你的代码存在两处问题:

  1. := 运算符左侧的表达式默认不会自动执行求值,你编写的tools::toTitleCase(as_string(ensym(col_name))) 没有被提前解析为字符串,而是作为未执行的调用表达式传递给rename,因此触发了「LHS必须是字符串或符号」的报错
  2. 函数内部硬编码了数据集quakes,没有使用传入的参数df,即使解决求值问题,函数也只会修改固定的quakes数据集,无法复用
修正方案

你只需要对左侧表达式添加!!(强制求值运算符),同时替换硬编码的数据集即可,完整代码如下:

library(dplyr)

titlecase_col <- function(df, col_name) {
  df %>%
    rename(!!tools::toTitleCase(as_string(ensym(col_name))) := {{col_name}})
}

调用测试

titlecase_col(quakes, lat)
扩展说明

如果需要批量将数据框所有列名转为首字母大写格式,无需自定义函数,可以直接使用dplyr内置的rename_with函数实现,代码更简洁:

quakes %>% rename_with(tools::toTitleCase)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:57:05