我正在尝试适应R中的作用域问题。我想在函数内部调用glm()
函数,但似乎由于作用域问题,我无法使用assign()
或eval()
函数进行修复。
以下是简化版本:
ao <- function (y, x, phi = seq (0,1,0.1), dataset, weights) {
logLikvector <- rep(0,length(phi)) # vector of zeros to be replaced thereafter
for (i in 1:length(phi)) { # loop to use glm()
fit <- glm (y ~ x, data = dataset, family = binomial, weights = weights)
logLikvector[i] <- logLik(fit) # get log likelihood
}
logLikvector
}
现在我想在我的数据集上使用ao()函数。
ao (y = Prop, x = Age, dataset = mydata, weights = Total)
这个不起作用,但是以下方法可以解决:
ao (y = mydata$Prop, x = mydata$Age, dataset = mydata, weights = mydata$Total)
有人知道该怎么做吗?
非常感谢任何帮助!!!
顺便说一下,这是如何复制我正在使用的数据集中的问题:
library("MASS")
data(menarche)
mydata <- menarche
mydata$Prop <- mydata$Menarche / mydata$Total