R — Преобразование формул в символьные строки и наоборот

#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