Диаграмма R с использованием html для форматирования при чтении текста из переменной r

Я создаю блок-схему с помощью средства создания диаграмм пакетов R. Чтобы получить желаемое форматирование (полужирный, маркер, выравнивание по левому краю), я могу написать метку узла в html. Однако я также хочу заполнить часть текста, вызвав переменные в R, и я не могу понять, как это сделать одновременно (форматирование html + вызов переменных R).

В этом фрагменте кода форматирование html работает, но вместо того, чтобы печатать строку, назначенную переменной text_var, она печатает строку text_var.

library(DiagrammeR)

text_var = 'Some text'

grViz("digraph flowchart {
      # Node definitions
      node [fontname = Helvetica, shape = box]        
      tab1 [label = <<b> Node 1 </b> <br ALIGN = 'LEFT' /> &#8226; text_var  <br ALIGN = 'LEFT' /> 
                    >]
      tab2 [label = 'Node 2']

      # Edge definitions
      tab1 -> tab2 


      }")

введите здесь описание изображения

В этом фрагменте кода я печатаю строку, назначенную переменной text_var, но html нет.

library(DiagrammeR)

text_var = 'Some text'

grViz("digraph flowchart {
      # Node definitions
      node [fontname = Helvetica, shape = box]        
      tab1 [label = '@@1']
      tab2 [label = 'Node 2']

      # Edge definitions
      tab1 -> tab2 
}

      [1]: paste0('Node 1 \\n ', text_var)


      ")

введите здесь описание изображения

Желаемый результат — текст из второго примера с форматированием из первого. Благодарю вас!


person Alton    schedule 13.01.2020    source источник


Ответы (2)


Хотя решение Аллана Кэмерона работает, также можно использовать Подстановка Graphviz.

Однако я обнаружил, что реализация довольно ошибочна, хотя @@1 должен работать в приведенном ниже примере, я обнаружил, что для полного использования ЦП потребовалось более 3 минут, прежде чем я отключил его. @@1-1 вроде работает.

text_var = 'Some text'

grViz("
  digraph flowchart {
    # Node definitions
    node [fontname = Helvetica, shape = box]        
    tab1 [label = <
                   <b>Node 1</b>
                   <br ALIGN = 'LEFT' /> 
                     &#8226; @@1-1
                   <br ALIGN = 'LEFT' /> 
                  >]
    tab2 [label = 'Node 2']

    # Edge definitions
    tab1 -> tab2 
  }
  [1]: text_var"
)

введите здесь описание изображения

person nograpes    schedule 13.01.2020
comment
В то время как другое решение хорошо работает для примера с игрушкой, это кажется более подходящим для ссылки на несколько переменных R. Благодарю вас! - person Alton; 13.01.2020

R не знает, хотите ли вы, чтобы строка «text_var» внутри строки, которую вы передаете grViz, была заменена фактической переменной text_var, содержащей вашу строку. Попробуйте это вместо этого:

grViz(gsub("text_var", text_var, "digraph flowchart {
      # Node definitions
      node [fontname = Helvetica, shape = box]        
      tab1 [label = <<b> Node 1 </b> <br ALIGN = 'LEFT' /> &#8226; text_var  <br ALIGN = 'LEFT' /> 
                    >]
      tab2 [label = 'Node 2']

      # Edge definitions
      tab1 -> tab2 


      }"))
    ```
person Allan Cameron    schedule 13.01.2020