これは、私が遭遇した問題の最小限の例です。
mylm <- function(formula,data,subset=NULL){
mysubset <- subset # some other clever manipulation
lm(formula,data,mysubset)
}
mydata <- data.frame(x=rnorm(10),y=rnorm(10))
mylm(y~x,mydata) # this fails!
最後の行が失敗する理由は、lmへの呼び出しが含まれておりmodel.frame、 で評価されますparent.frame。つまりlm、コード行が含まれています。
mf <- eval(mf, parent.frame())
ここmfで、右側の は巧妙に構築された への呼び出しmodel.frameです。私mysubsetはeval. おそらく使用できることはわかっていますが、forlm.fit内の環境を作成する方法はありますか?mylmparent.framelm