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

调用feols进行回归时如何处理变量名中的特殊字符?

报错原因

R的公式语法规定,包含特殊符号(短横线、&、空格等)、数字开头的非标准变量名,必须用反引号(`)包裹才能被正确识别,你此前的两种方案均未对变量名做特殊包裹处理,因此解析失败。

兼容特殊变量名的实现方案

方案1:修改字符串拼接逻辑(简单直观)

构造公式字符串时,主动给传入的变量名加上反引号包裹即可:

estimation_fun <- function(col1, col2, df) {
  # 变量名两侧加反引号适配非标准命名
  fml <- as.formula(sprintf("`%s` ~ `%s` | Card + Date", col1, col2))
  regression <- feols(fml, data = df)
  est <- tidy(regression)$estimate
  se <- tidy(regression)$std.error
  return(list(estimate = est, std.error = se))
}

测试运行estimation_fun("A-A","B B",data)即可正常返回结果。

方案2:使用fixest原生xpd函数构造公式(更推荐)

fixest自带的xpd()函数是专门用于动态构造回归公式的工具,会自动处理非标准变量名,无需手动处理转义,稳定性更高:

estimation_fun <- function(lhs, rhs, df) {
  # xpd自动映射传入的变量名,兼容特殊字符
  fml <- xpd(lhs_col ~ rhs_col | Card + Date, lhs_col = lhs, rhs_col = rhs)
  regression <- feols(fml, data = df)
  est <- tidy(regression)$estimate
  se <- tidy(regression)$std.error
  return(list(estimate = est, std.error = se))
}

如果需要批量运行多组回归,直接将变量名组合放入循环或者lapply遍历调用该函数即可,完全不需要修改原始数据集的列名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:08