为什么 get 在 gamm 中找不到对象,但它在 lm 中有效?
Why does get fail to find object in gamm, yet it works in lm?
我正在努力编写一个使用 get()
调用变量的 R 函数
假设我有这个数据框:
mydat = data.frame(y = rnorm(100),
x = rnorm(100),
day = sample(90:260, 100, replace = T),
r1 = sample(seq(2008,2015,1), 100, replace = T),
r2 = sample(letters, 100, replace = T),
r3 = sample(letters, 100, replace = T))
我想写一个函数,returns gamm 模型的摘要,例如像这样
gamm_summary = function(data, response = "y"){
require(mgcv)
gamm_model = gamm(get(response) ~ s(day),
random = list(r1=~1, r2=~1, r3 =~1), data = data, method = "REML")
summary(gamm_model$gam)
}
gamm_summary(mydat)
为什么这会给我错误:
Error in get(response) : object 'response' not found
还有以下作品:
lm_summary = function(data, response = "y") {
lm_model = lm(get(response) ~ x, data = data)
summary(lm_model)
}
lm_summary(mydat)
问:为什么 get 无法在我的 gamm 函数中运行?我该如何重写该函数才能使其运行?
require(mgcv)
gamm_summary = function(mydata, a1 = "y", b1 = "day", rnd1 = "r1", rnd2 = "r2", rnd3 = "r3"){
df = data.frame(aa = mydata[[a1]], bb = mydata[[b1]], rnd1 = mydata[[rnd1]], rnd2 = mydata[[rnd2]], rnd3 = mydata[[rnd3]])
gamm_model = gamm(aa ~ s(bb), data = df, random = list(rnd1 =~ 1, rnd2 =~ 1, rnd3 =~ 1), method = "REML")
summary(gamm_model$gam)
}
gamm_summary(mydat, a1 = "x")
我正在努力编写一个使用 get()
假设我有这个数据框:
mydat = data.frame(y = rnorm(100),
x = rnorm(100),
day = sample(90:260, 100, replace = T),
r1 = sample(seq(2008,2015,1), 100, replace = T),
r2 = sample(letters, 100, replace = T),
r3 = sample(letters, 100, replace = T))
我想写一个函数,returns gamm 模型的摘要,例如像这样
gamm_summary = function(data, response = "y"){
require(mgcv)
gamm_model = gamm(get(response) ~ s(day),
random = list(r1=~1, r2=~1, r3 =~1), data = data, method = "REML")
summary(gamm_model$gam)
}
gamm_summary(mydat)
为什么这会给我错误:
Error in get(response) : object 'response' not found
还有以下作品:
lm_summary = function(data, response = "y") {
lm_model = lm(get(response) ~ x, data = data)
summary(lm_model)
}
lm_summary(mydat)
问:为什么 get 无法在我的 gamm 函数中运行?我该如何重写该函数才能使其运行?
require(mgcv)
gamm_summary = function(mydata, a1 = "y", b1 = "day", rnd1 = "r1", rnd2 = "r2", rnd3 = "r3"){
df = data.frame(aa = mydata[[a1]], bb = mydata[[b1]], rnd1 = mydata[[rnd1]], rnd2 = mydata[[rnd2]], rnd3 = mydata[[rnd3]])
gamm_model = gamm(aa ~ s(bb), data = df, random = list(rnd1 =~ 1, rnd2 =~ 1, rnd3 =~ 1), method = "REML")
summary(gamm_model$gam)
}
gamm_summary(mydat, a1 = "x")