R diagrammeR 在从 r 变量读取文本时使用 html 进行格式化

R diagrammeR using html for formatting while reading text from r variable

我正在使用 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)


      ")

期望的结果是第二个示例中的文本具有第一个示例中的格式。谢谢!

R 不知道您想要将传递给 grViz 的字符串中的字符串 "text_var" 替换为包含您的字符串的实际变量 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 


      }"))
    ```

虽然 有效,但也可以使用 Graphviz Substitution.

我发现这个实现相当有问题,虽然 @@1 应该在下面的例子中工作,但我发现在我关闭它之前它花费了超过 3 分钟的完整 CPU 使用时间。 @@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"
)