#r #dataframe #function #eval
Вопрос:
Интересно, почему мой data123
не распознается внутри allEffects(fit2, ...)
вызова ниже? Есть ли в этом какое-то решение?
Моя «Версия R 4.0.0 (2020-04-24)», машина с Windows 10.
Error object 'data123' not found
library(effects) m1 lt;- lm(mpg ~ hp cyl, data = mtcars) foo lt;- function(fit,...) { data123 lt;- eval(fit$call$data) fit2 lt;- lm(fit$call$formula, data = data123) allEffects(fit2, ...) #### 'data123' not recognized HERE } #----------EXAMPLE OF USE: foo(m1) # Error during wrapup: object 'data123' not found
Ответ №1:
allEffects
Функция очень требовательна к окружающей среде. Вам необходимо убедиться, что набор данных, который вы хотите использовать, находится в той же среде, что и формула, используемая для модели. Попробуй
foo lt;- function(fit,...) { data123 lt;- eval(fit$call$data) formula123 lt;- eval(fit$call$formula) environment(formula123) lt;- environment() fit2 lt;- lm(formula123, data = data123) allEffects(fit2, ...) } foo(m1)
Здесь мы явно извлекаем формулу и сбрасываем ее окружение в тело функции, которое data123
определено.