gpt4 book ai didi

r - 从 R 中的模型中提取公式

转载 作者:行者123 更新时间:2023-12-04 00:50:47 30 4
gpt4 key购买 nike

我正在为许多模型类型构建一个函数,它需要提取用于制作模型的公式。有没有灵活的方法来做到这一点?例如:

x <- rnorm(10)
y <- rnorm(10)
z <- rnorm(10)
equation <- z ~ x + y
model <- lm(equation)

我需要做的是在通过模型后提取公式对象“方程”。

最佳答案

你可以通过以下方式得到你想要的:

  model$call
# lm(formula = formula)

如果你想看看我发现了什么,那么使用:
str(model)

由于您从调用环境中传递了“公式”(顺便说一句,名称选择不当),因此您可能需要从传递的对象中提取:
 eval(model$call[[2]])
# z ~ x + y

@JPMac 提供了一种更紧凑的方法: formula(model) .还值得一看 formula.lm 使用的机制功能。名为 formula 的函数是通用的,您使用 methods(formula)查看定义了哪些 S3 方法。自 formula.lm方法的末尾有一个星号,您需要将其包装在 `getAnywhere 中:
> getAnywhere(formula.lm)
A single object matching ‘formula.lm’ was found
It was found in the following places
registered S3 method for formula from namespace stats
namespace:stats
with value

function (x, ...)
{
form <- x$formula
if (!is.null(form)) {
form <- formula(x$terms)
environment(form) <- environment(x$formula)
form
}
else formula(x$terms)
}
<bytecode: 0x36ff26158>
<environment: namespace:stats>

所以它使用“$”来提取名为“formula”的列表项,而不是从调用中提取它。如果 $formula 项目丢失(在您的情况下是这样),那么它会用 formula(x$terms) 替换它我怀疑是在打电话 formula.default而看那个功能的操作,似乎只是在调整物体的环境。

关于r - 从 R 中的模型中提取公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9694255/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com