gpt4 book ai didi

r - 将 Boot 调用包装在函数中会产生错误

转载 作者:行者123 更新时间:2023-12-03 04:39:52 29 4
gpt4 key购买 nike

R中,生成一些假数据:

x1 <- runif(100)
y1 <- 2*x1 + runif(100)

生成线性模型并将其传递给 Boot(来自 car 包)

fit1 <- lm(y1 ~ x1)
Boot(fit1)

没问题。现在将相同的代码包装在一个函数中。

do_boot <- function(x,y) {
fit <- lm(y ~ x)
Boot(fit)
}
do_boot(x1,y1)

这会产生错误

Error in eval(predvars, data, env) : object 'y' not found

为什么?

最佳答案

出于某种原因,我无法解释(可能是因为Boot内部如何工作),您需要将数据存储在全局环境中。查看错误:

您可以将数据分配给全局环境:

library(car)

x1 <- runif(100)
y1 <- 2*x1 + runif(100)

do_boot <- function(x,y) {
assign("x",x,envir=parent.frame())
assign("y",y,envir=parent.frame())
fit <- lm(y ~ x)
Boot(fit)
rm(x)
rm(y)
}

do_boot(x1,y1)

或者直接使用它们:

library(car)

x1 <- runif(100)
y1 <- 2*x1 + runif(100)

do_boot <- function() {
fit <- lm(y1 ~ x1)
Boot(fit)

}

do_boot()

对我来说,这两种解决方案都很奇怪而且丑陋。不过我更喜欢第一个。

关于r - 将 Boot 调用包装在函数中会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54893422/

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