#r #formula
#r #формула
Вопрос:
Я немного смущен некоторым странным поведением в R
. Когда вы превращаете формулу в символьную строку, она автоматически разделяет две части формулы на отдельные элементы следующим образом:
#Convert formula to character string
FORMULA <- formula(y ~ a b c d)
CHAR <- as.character(FORMULA)
CHAR
[1] "~" "y" "a b c d"
Однако при попытке обратного преобразования вы не получаете исходную формулу:
as.formula(CHAR)
~y
Почему это происходит — т.Е. Почему Не R
выполняется обратное преобразование в формулу, с которой вы начали? Есть ли функция (или какой-либо другой простой способ) для преобразования символьной строки обратно в формулу?
Комментарии:
1. Какова конечная цель? Вы хотите отредактировать определенные части формулы?
Ответ №1:
Используется format
для перехода от формулы к символьной строке и использования as.formula
для перехода в другом направлении:
FORMULA <- formula(y ~ a b c d) # from question
format(FORMULA)
## [1] "y ~ a b c d"
as.formula("y ~ a b c d")
## y ~ a b c d
Кроме того, y ~ a b c d
это уже формула. Нет смысла использовать formula(...)
что-то, что уже является формулой:
identical(y ~ a b c d, formula(y ~ a b c d))
## [1] TRUE
Ответ №2:
В этом конкретном случае вы можете собрать исходную формулу обратно, используя paste
:
as.formula(paste(CHAR[2], CHAR[1], CHAR[3]))
y ~ a b c d