繁体   English   中英

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

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

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

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

例如,他们将某个变量称为“previous_customer”并将其编码为虚拟变量。 但是在我使用的数据框中,我有一个名为“previous_customer”的分类变量,我们运行的代码需要“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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM