2015-07-02 31 views
8

我想以易讀格式顯示R公式,以查看公式。優雅地顯示R公式(如在Latex中)

比方說,我有:

A=B/C 

我想知道是否有某種方式來顯示它喜歡它會在乳膠輸出顯示:

$A=\frac{B}{C}$ 
+1

顯示它到底在哪?你看過'plotmath'來繪製註釋嗎? – MrFlick

+0

任何地方其實..一個情節,框架等 – user2266881

回答

13

這很可能已經存在,但您可以編寫一個函數來使用mathjax渲染公式,並在查看器(如果您使用rstudio)或Web瀏覽器中顯示它。這將有助於如果你想編輯/在飛行校驗公式我想

form1 <- '$$A=\\frac{B}{C}$$' 
form2 <- '$$ 
    \\frac{1}{\\displaystyle 1+ 
     \\frac{1}{\\displaystyle 2+ 
      \\frac{1}{\\displaystyle 3+x}}} + 
    \\frac{1}{1+\\frac{1}{2+\\frac{1}{3+x}}} 
$$' 
form3 <- '\\frac{d}{dx}\\left(\\int_{0}^{x} f(u)\\,du\\right)=f(x)' 

show_math(form1) 

enter image description here

或打開瀏覽器,如果你不rstudio

show_math(form2, use_viewer = FALSE) ## opens in default browser 

enter image description here

使用
show_math(form1, form2, form3, css = 'color: red; font-size: 15px;') 

enter image description here

我很確定mathjax沒有完全支持乳膠方程。並且一定要逃過\的公式

您還可以顯示多個很酷的單行。

form4 <- " 
\\forall a,b,c \\in \\mathbb{R} \\\\ 
\\begin{align} 
         a + b &= c \\\\ 
      (a + b)(a - b) &= c(a - b) \\\\ 
        a^2 - b^2 &= ca - cb \\\\ 
        a^2 - ca &= b^2 - cb \\\\ 
    a^2 - ca + \\frac{c^2}{4} &= b^2 - cb + \\frac{c^2}{4} \\\\ 
     (a - \\frac{c}{2})^2 &= (b - \\frac{c}{2})^2 \\\\ 
      a - \\frac{c}{2} &= b - \\frac{c}{2} \\\\ 
          a &= b \\qquad \\qquad \\blacksquare \\\\ 
\\end{align} 
" 

show_math(form4) 

enter image description here

show_math <- function(..., css, use_viewer = !is.null(getOption('viewer'))) { 
    mj <- "<script> 
    (function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'; 
    document.getElementsByTagName('head')[0].appendChild(script); 
    })(); 
</script>" 

    ## view text strings as html in viewer/browser 
    view_html <- function(..., viewer) { 
    x <- c(...) 
    if (is.null(x)) return(invisible()) 
    htmlFile <- tempfile(fileext = '.html') 
    writeLines(x, con = htmlFile) 
    if (viewer) 
      tryCatch(rstudio::viewer(htmlFile), 
        error = function(e) { 
        message('Viewer not available - opening in browser.\n', 
          'If using Rstudio, try installing the \'rstudio\' package.', 
          domain = NA) 
        browseURL(htmlFile) 
        }) 
    else browseURL(htmlFile) 
    invisible(x) 
    } 

    ## use \[ expr \] instead of $$ expr $$ 
    check_expr <- function(x) 
    sprintf('\\[%s\\]', gsub('^\\$+|\\$+$', '', x)) 

    x <- paste(sapply(c(...), check_expr), collapse = '<br />') 
    if (!nzchar(x)) return(invisible()) 
    if (missing(css)) css <- '' 

    ## setting the default to larger font since @Molx has bad eyes :} 
    ## this can still be over-ridden by passing font-size: whatever; to css 

    view_html(sprintf('<span class="math" style="font-size: 24px; %s;">\n', css), 
      x, '\n</span>\n', mj, viewer = use_viewer) 
} 
+0

你已經有這個功能或只是寫了它?這很棒!但它始終在瀏覽器中打開,絕不會在RStudio查看器中打開。我解決了將'rstudio'包中的兩個參考替換爲'rstudioapi'。 – Molx

+0

@Molx是的,我只是在玩它。 'getOption('viewer')'返回給你什麼? – rawr

+0

我試過了,它返回一個函數。 'function(url,height = NULL) {'...'不可見(.Call(「rs_viewer」,url,height))'。 – Molx

1

對於您可以將圖形標籤只需使用expression?plotmath業務就像@MrFlick提到的

plot(1, main=expression(A==frac(B, C)))