如何在拟合的 glm 模型中更改变量的名称?

How do I change the name of a variable in a fitted glm model?

我有一个来自其他人在 R 中构建的模型 (glm) 的模型对象。

我想重新命名模型中的几个变量。我无法轻松访问重新运行他们的代码并在他们的数据框中使用不同的变量名称构建模型。

例如,他们调用某个变量"previous_customer"并将其编码为虚拟变量。但是在我使用的数据框中,我有一个名为 "previous_customer" 的分类变量,我们 运行ning 的代码需要 "previous_customer" 在几个不同的地方成为分类变量。

可以 替换我开始使用的代码中的任何地方的 previous_customer,但我希望有一些方法可以重命名 "previous_customer"在我正在使用的模型对象中,类似于 "previous_customer_flag"。如果我能做到这一点,我将花费大约 2 秒的时间来处理这个问题。但是,令我惊讶的是,我并没有真正找到任何有关如何在构建模型后重命名变量的信息。

有谁知道该怎么做,或者如果由于某种原因无法做到这一点?

@AndrewGustar 是对的:您的方法 可以 通过替换整个列表中变量名称的每个实例来完成。但是这些名称出现在很多地方,既作为字符向量又作为语言对象。

一个更简单的选择是编写一个环绕 predict 的函数来准备数据集的列:

predict_with_rename <- function(object, newdata = NULL, ...) {
    if (!is.null(newdata)) {
        newdata[["previous_customer"]] <- newdata[["previous_customer_flag"]]
    }
    predict(object, newdata, ...)
}

我自己寻找最佳解决方案时遇到了这个问题。

我最终使用了

names(model) <- sub("old_name", "new_name", names(model))