R如何将mathml转换为r方程

R how to convert mathml to an r equation

我有一个方程式的 mathml 版本(下面,从 pdf 复制)我想在 R 中使用。我试过 XML 和 xml2 包,但它们似乎没有一个函数来做到这一点。最终函数如下所示

HI <- -42 + 2.04 * RH + .22 * T^2 ...

这是 mathml 版本。

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mtable columnalign="left" rowspacing="4pt" columnspacing="1em">
    <mtr>
      <mtd>
        <mrow class="MJX-TeXAtom-ORD">
          <mrow class="MJX-TeXAtom-ORD">
            <mi mathvariant="normal">H</mi>
            <mi mathvariant="normal">I</mi>
          </mrow>
        </mrow>
        <mo>=</mo>
        <mo>&#x2212;<!-- − --></mo>
        <mn>42.379</mn>
        <mo>+</mo>
        <mn>2.04901523</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <mrow class="MJX-TeXAtom-ORD">
            <mi mathvariant="normal">R</mi>
            <mi mathvariant="normal">H</mi>
          </mrow>
        </mrow>
        <mo>&#x2212;<!-- − --></mo>
        <mn>10.14333127</mn>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mspace width="thinmathspace" />
        <mspace width="-65pt" />
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <mrow class="MJX-TeXAtom-ORD">
            <mi mathvariant="normal">R</mi>
            <mi mathvariant="normal">H</mi>
          </mrow>
        </mrow>
        <mo>&#x2212;<!-- − --></mo>
        <mn>0.22475541</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <mi>T</mi>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mspace width="thinmathspace" />
        <mspace width="30pt" />
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <mrow class="MJX-TeXAtom-ORD">
            <mi mathvariant="normal">R</mi>
            <mi mathvariant="normal">H</mi>
          </mrow>
        </mrow>
        <mo>&#x2212;<!-- − --></mo>
        <mn>0.00683783</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <msup>
          <mi>T</mi>
          <mn>2</mn>
        </msup>
        <mo>&#x2212;<!-- − --></mo>
        <mn>0.05481717</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <msup>
            <mrow class="MJX-TeXAtom-ORD">
              <mi mathvariant="normal">R</mi>
              <mi mathvariant="normal">H</mi>
            </mrow>
            <mrow class="MJX-TeXAtom-ORD">
              <mn>2</mn>
            </mrow>
          </msup>
        </mrow>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mspace width="thinmathspace" />
        <mspace width="20pt" />
        <mo>+</mo>
        <mn>0.00122874</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <msup>
          <mi>T</mi>
          <mn>2</mn>
        </msup>
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <mrow class="MJX-TeXAtom-ORD">
            <mi mathvariant="normal">R</mi>
            <mi mathvariant="normal">H</mi>
          </mrow>
        </mrow>
        <mo>+</mo>
        <mn>0.00085282</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <mi>T</mi>
      </mtd>
    </mtr>
    <mtr>
      <mtd>
        <mspace width="thinmathspace" />
        <mspace width="-25pt" />
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <msup>
            <mrow class="MJX-TeXAtom-ORD">
              <mi mathvariant="normal">R</mi>
              <mi mathvariant="normal">H</mi>
            </mrow>
            <mrow class="MJX-TeXAtom-ORD">
              <mn>2</mn>
            </mrow>
          </msup>
        </mrow>
        <mo>&#x2212;<!-- − --></mo>
        <mn>0.00000199</mn>
        <mo>&#x00D7;<!-- × --></mo>
        <msup>
          <mi>T</mi>
          <mn>2</mn>
        </msup>
        <mo>&#x00D7;<!-- × --></mo>
        <mrow class="MJX-TeXAtom-ORD">
          <msup>
            <mrow class="MJX-TeXAtom-ORD">
              <mi mathvariant="normal">R</mi>
              <mi mathvariant="normal">H</mi>
            </mrow>
            <mrow class="MJX-TeXAtom-ORD">
              <mn>2</mn>
            </mrow>
          </msup>
        </mrow>
      </mtd>
    </mtr>
  </mtable>
</math>

我的解决方案并不优雅,只是部分解决方案如下

  1. 将数学代码写入文本文件。我叫它 mathml.txt.

  2. 运行以下代码

    库(xml2) xmlin <- read_xml(x = "mathml.txt") write_html(xmlin, "test.html") 这将创建一个 html 文件,其中包含方程式。至少,您可以将其复制并粘贴到文本编辑器中以创建 R 方程。