簡體   English   中英

朱庇特/R | 如何強制 data.frame 輸出為 text/html 和 text/latex?

[英]Jupyter/R | How to force data.frame output as text/html and text/latex?

Jupyter/R 對 data.frame 的默認顯示會生成 text/html 和 text/latex 版本作為輸出。 您可以在 JSON 格式的 .ipynb 文件中看到這兩者的明確描述。 (這很好,因為 html 版本在運行的 Jupyter 筆記本中很好地呈現,而乳膠版本可以在從 .ipynb 轉換為 .tex 格式時使用)。

為了特別格式化 data.frames,我使用了 knitr 的 kable 函數,該函數生成 html(在 Jupyter 中呈現)或 Latex(不在 Jupyter 中呈現)。 我如何強制輸出兩者,就像默認顯示一樣。

JSON 格式的 .ipynb 文件應如下所示:

   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "hide_input": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n", ......
      ],
      "text/latex": [
       "A data.frame: 3 × 3\n",
       "\\begin{tabular}{lll}\n", .......
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data.frame(a=c(1,2,3), b=c(10,20,30), c=c(100,200,300))"
   ]
  },

這是解決方案。 使用 kable 創建 HTML 表示並再次使用 kable 創建 LaTex 表示。 用這兩個表示作為元素構建一個“mimebundle”列表。 使用 IRdisplay 的 publish_mimebundle 函數來顯示。 運行 Jupyter 時將呈現 HTML 表示; 從 Jupyter 格式轉換為 LaTeX 格式時,pandoc 將按原樣復制 LaTex 表示。

x = data.frame(a=c(1,2,3), b=c(10,20,30), c=c(100,200,300))
x.html = kable(x, format=“html”, escape=FALSE, align=rep(“r”, ncol(x)), caption=“This is from HTML”, row.names=FALSE, table.attr=“style="white-space: nowrap;"”)
x.latex = kable_styling(latex_options=c(“hold_position”),
kable(x, format=“latex”, escape=FALSE, align=rep(“r”, ncol(x)), caption=“This is from LaTex”, row.names=FALSE))
mbx = list(data=list(“text/html”=as.character(x.html), “text/latex”=as.character(x.latex)), metadata=NULL)
publish_mimebundle(mbx$data, mbx$metadata)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM