Я не хочу использовать обратную арифметику, потому что что-то может быть потеряно. Например, если есть отрицательные значения, log выдаст NA
с. Есть ли «обратная формула»? Я посмотрел на ?formula
, ?update.formula
и ?terms.formula
. Я думал, что terms.formula
может что-то мне помочь, но я так не думаю.
В следующем я хотел бы функцию cancel
, как в temp2
. Я бы хотел, чтобы он дал тот же результат, что и temp3
.
temp1 <- log(y) ~ x
temp2 <- update(temp1, cancel(.) ~ .)
temp3 <- update(temp1, y ~ .)
Меня интересует не только log
. Вот еще один пример:
foo1 <- factor(y) ~ x
foo2 <- update(foo1, y ~ .) #I would like this same result, but without having to use "y"
Я бы хотел что-нибудь простое. Я пробовал что-то вроде
temp1[2] <- gsub("log","",temp1[2])
И я не мог заставить его работать. Но я не знаю, хочу ли я этого в любом случае.
Есть идеи?
[редактировать: больше контекста]
Я действительно заинтересован в этом для удобства чтения. Мне нравится функция update.formula
, потому что я думаю, что она делает код действительно читабельным. Вместо того, чтобы сравнивать две формулы, чтобы выяснить, в чем различия, update.formula показывает это напрямую. Таким образом, у меня есть модель, с которой я сейчас работаю и которая имеет зависимую переменную factor(y)
. Я хотел бы обновить эту формулу до y
. Я мог бы просто сделать это явно, но так же, как вы можете перейти от y
до factor(y)
с помощью factor(.)
, я хотел бы сказать читателю, что я обновляю формулу, делая то же самое, что-то вроде take_off_factor(.)
, Например, если я определяю свою модель в начале, а затем в середине кода, который у меня есть new_model <- update(original_model, y ~ .)
, вам придется вернуться и найти исходную модель, чтобы выяснить, какой была моя зависимая переменная раньше. Это могло быть log(y)
или factor(y)
. Делая что-то вроде take_off_factor(.)
~. Вы знаете, что у старой модели было factor(y)
. Конечно, я мог бы просто добавить комментарии, чтобы объяснить, что я делаю. Я сделаю это, но я также думаю, что хороший код должен говорить сам за себя.