首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当将数据名称作为另一个函数中的参数应用于gls函数时,将不会执行。

当将数据名称作为另一个函数中的参数应用于gls函数时,将不会执行。
EN

Stack Overflow用户
提问于 2016-03-08 14:55:05
回答 1查看 53关注 0票数 0

使用包nlme,我有一个模型:

代码语言:javascript
复制
gls(temp.avg ~ year, data = df, method = 'ML')

这正是我所期望的。但是,当我在一个函数中创建带有gls函数的数据参数的模型时,我的模型不再使用数据'df‘,而是只打印"dat“。以下是功能:

代码语言:javascript
复制
function(dat) { gls(temp.avg ~ year, data = dat, method = 'ML') }

下面是当我(首先)在包装器函数之外创建模型时查看模型时的样子,然后(第二个)在函数内部看到"Data“行

代码语言:javascript
复制
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与"dat“本身?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 15:05:41

代码语言:javascript
复制
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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35870641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档