当应用于 gls 函数作为另一个函数内的参数时,数据名称不会继续
Data name won't carry through when applied to gls function as an argument inside another function
使用包 nlme
,我有型号:
gls(temp.avg ~ year, data = df, method = 'ML')
这完全符合我的预期。但是,当我在 函数中创建模型 并为 gls
函数更改数据参数时,我的模型不再使用数据 'df' 而只是打印 "dat"。这是函数:
function(dat) { gls(temp.avg ~ year, data = dat, method = 'ML') }
这是我在包装函数的 outside 创建时查看模型时的样子,然后是 inside 函数 [注意 "Data" 行]:
Generalized least squares fit by maximum likelihood
Model: temp.avg ~ year
Data: df
Log-likelihood: -3877.052
Coefficients:
(Intercept) (year)
15.135135363 -0.008796849
Degrees of freedom: 1116 total; 1114 residual
Residual standard error: 7.807791
##########################
Generalized least squares fit by maximum likelihood
Model: temp.avg ~ year
Data: dat
Log-likelihood: -3877.052
Coefficients:
(Intercept) (year)
15.135135363 -0.008796849
Degrees of freedom: 1116 total; 1114 residual
Residual standard error: 7.807791
我真的不希望它那样做。
我怎样才能让函数继承我指定的数据而不是 "dat" 本身?
library(nlme)
fun <- function(dat) {
res <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), dat)
res$call$data <- substitute(dat)
res
}
fun(Ovary)
#Generalized least squares fit by REML
# Model: follicles ~ sin(2 * pi * Time) + cos(2 * pi * Time)
# Data: Ovary
# Log-restricted-likelihood: -898.434
#
#Coefficients:
# (Intercept) sin(2 * pi * Time) cos(2 * pi * Time)
# 12.2155822 -3.3396116 -0.8697358
#
#Degrees of freedom: 308 total; 305 residual
#Residual standard error: 4.486121
使用包 nlme
,我有型号:
gls(temp.avg ~ year, data = df, method = 'ML')
这完全符合我的预期。但是,当我在 函数中创建模型 并为 gls
函数更改数据参数时,我的模型不再使用数据 'df' 而只是打印 "dat"。这是函数:
function(dat) { gls(temp.avg ~ year, data = dat, method = 'ML') }
这是我在包装函数的 outside 创建时查看模型时的样子,然后是 inside 函数 [注意 "Data" 行]:
Generalized least squares fit by maximum likelihood
Model: temp.avg ~ year
Data: df
Log-likelihood: -3877.052
Coefficients:
(Intercept) (year)
15.135135363 -0.008796849
Degrees of freedom: 1116 total; 1114 residual
Residual standard error: 7.807791
##########################
Generalized least squares fit by maximum likelihood
Model: temp.avg ~ year
Data: dat
Log-likelihood: -3877.052
Coefficients:
(Intercept) (year)
15.135135363 -0.008796849
Degrees of freedom: 1116 total; 1114 residual
Residual standard error: 7.807791
我真的不希望它那样做。
我怎样才能让函数继承我指定的数据而不是 "dat" 本身?
library(nlme)
fun <- function(dat) {
res <- gls(follicles ~ sin(2*pi*Time) + cos(2*pi*Time), dat)
res$call$data <- substitute(dat)
res
}
fun(Ovary)
#Generalized least squares fit by REML
# Model: follicles ~ sin(2 * pi * Time) + cos(2 * pi * Time)
# Data: Ovary
# Log-restricted-likelihood: -898.434
#
#Coefficients:
# (Intercept) sin(2 * pi * Time) cos(2 * pi * Time)
# 12.2155822 -3.3396116 -0.8697358
#
#Degrees of freedom: 308 total; 305 residual
#Residual standard error: 4.486121