Я унаследовал некоторый код, который использует, как мне кажется, общий язык для библиотек, но я не уверен, что достигается написанием такого многословного способа. В конечном итоге я намереваюсь переписать, но сначала хотел бы знать, почему, прежде чем сделать что-то глупое.
ecd <-
function(formula, data, subset, weights, offset, ...) {
cl = match.call()
mf = match.call(expand.dots = FALSE)
m =
match(c("formula", "data", "subset", "weights", "offset"),
names(mf),
0L)
mf = mf[c(1L, m)]
mf$drop.unused.levels = TRUE
mf[[1L]] = quote(stats::model.frame)
mf = eval(mf, parent.frame())
mt = attr(mf, "terms")
y = stats::model.response(mf, "numeric")
w = as.vector(stats::model.weights(mf))
offset = as.vector(stats::model.offset(mf))
x = stats::model.matrix(mt, mf, contrasts)
z = ecd.fit(x, y, w, offset, ...)
В настоящее время я понимаю, что он создает объект вызова функции (тип?) Из исходных аргументов функции, а затем вызывает его вручную, а не просто вызывает stats::model.frame
напрямую. Любые идеи будут оценены.