У меня проблемы с формулами, средами и survfit()
.
Все работает нормально для lm()
, но не работает для survfit()
.
Общая постановка проблемы:
Я подгоняю ряд формул к некоторым данным. Итак, я вызываю функцию моделирования с формулой, переданной в качестве переменной. Позже я хочу работать с формулой из подогнанного объекта.
(С моей наивной точки зрения проблема заключается в том, что survfit не записывает окружающую среду.)
Подробный пример
Ожидаемое поведение, как показано в lm()
:
library("plyr")
preds <- c("wt", "qsec")
f <- function() {
lm(mpg ~ wt, data = mtcars)
}
fits <- alply(preds, 1, function(pred)
{
modform <- reformulate(pred, response = "mpg")
lm(modform, data = mtcars)
})
fits[[1]]$call$formula
##modform
formula(fits[[1]])
## mpg ~ wt
## <environment: 0x1419d1a0>
Несмотря на то, что fits[[1]]$call$formula
разрешается в modform
, я все еще могу получить исходную формулу с помощью formula(fits[[1]])
.
Но у survfit()
ничего не получается:
library("plyr")
library("survival")
preds <- c("resid.ds", "rx", "ecog.ps")
fits <-
alply(preds, 1, function(pred)
{
modform <- paste("Surv(futime, fustat)", pred, sep = " ~ ")
modform <- as.formula(modform)
print(modform)
fit <- survfit(modform, data = ovarian)
})
fits[[1]]$call$formula
## modform
formula(fits[[1]])
## Error in eval(expr, envir, enclos) : object 'modform' not found
Здесь (и в отличие от lm-фитов) formula(fits[[1]])
не работает!
Итак, мой конкретный вопрос: как я могу вернуть формулу, используемую для соответствия fits[[1]]
?
fit <- eval(substitute(survfit(modform, data = ovarian), list(modform = modform)))
или просто добавьте формулу обратно в объект survfitfit$call$formula <- modform
, затем вернитеfit
- person rawr   schedule 17.10.2016fits[[1]]
, поскольку она создается в примере кода вопроса? В таком случае: если вы напишете свой комментарий в качестве ответа, я приму это. - person Andreas   schedule 17.10.2016