在 R Notebook 中,有一個函式可以在控制臺中制作許多繪圖并列印摘要統計資訊。我想在 HTML 輸出上并排獲取繪圖和控制臺輸出(即匯總統計資訊)。
這是一個非常簡單的例子:
---
title: "Example"
output: html_notebook
---
```{r}
mapply(FUN = function(.x) {
plot(.x)
summary(.x)
}, split(iris, iris$Species), SIMPLIFY = FALSE)
```
上述代碼的輸出如下所示:

如您所見,繪圖是一個接一個,控制臺輸出位于中間的某個位置。
預期的輸出如下所示:

我經歷了這些 SO 主題但沒有成功:
低效,但準確
但是,我知道您可能完全需要您所說的結果。我不知道如何在一次呼叫中拆分控制臺輸出和繪圖。我們可以做的是操縱 RMarkdown 輸出,使它們看起來來自單個呼叫。請注意,這是低效的,我建議將生成繪圖和匯總輸出的函式分解為單獨的函式,以便像第一個示例一樣使用。
--- title: "R Notebook" output: html_document: --- ```{r, results = F, fig.show = "hide"} mapply(FUN = function(.x) { plot(.x) summary(.x) }, split(iris, iris$Species), SIMPLIFY = FALSE) ``` :::: {.columns} ::: {.column width="60%"} ```{r, echo = F, results = F} mapply(FUN = function(.x) { plot(.x) summary(.x) }, split(iris, iris$Species), SIMPLIFY = FALSE) ``` ::: ::: {.column width="40%"} ```{r, echo = F, fig.show = "hide"} mapply(FUN = function(.x) { plot(.x) summary(.x) }, split(iris, iris$Species), SIMPLIFY = FALSE) ``` ::: ::::結果看起來非常接近您想要的輸出:

我們通過運行相同的函式(想象它是你提到的那個)來做到這一點,在第一種情況下隱藏繪圖和文本輸出,但保留代碼,然后只將繪圖保留在左列中,只有文本輸出在右欄。
希望這有幫助。
uj5u.com熱心網友回復:
這并不完美。例如,我沒有為螢屏尺寸添加處理程式。不過,我可以。不過,您必須讓我知道您在尋找什么。
這在 R Markdown 中使用了 Javascript。用于此的引擎是內置的。但是,我添加了代碼供您檢查(如果您這樣選擇)
names(knitr::knit_engines$get()):.另外,在
setup塊中,我添加了options(width = 75). 這將影響所有塊輸出。您可以更改它以使其成為特定于塊的選項。但是,默認值為 80,因此您可能不會注意到差異。我這樣做是因為對于三個組中的兩個,Species包裹到下一行。然而,對于versicolor,情況不同。這是統一執行的一部分。```{r setup, include=FALSE} knitr::opts_chunk$set(echo = FALSE) # confirm engine for 'js' (it was #37 for me) names(knitr::knit_engines$get()) # set the output width for chunks' render # this is to keep the summaries even (versicolor was doing its own thing) options(width = 75) library(tidyverse) ```樣式不在一個塊中。這在設定和下一個塊之間進行。
<style> .setupCols { display:flex; flex-direction:row; width: 100%; } .setupCols p{ display:flex; flex-direction: column; width: 45%; } .setupCols pre { display:flex; flex-direction: column; width: 55% } .setupCols pre code { font-size: 85%; } </style>接下來是您
mapply呼叫之前的一些代碼和之后的代碼。<div class="setupCols"> ```{r graphOne} mapply(FUN = function(.x) { plot(.x) summary(.x) }, split(iris, iris$Species), SIMPLIFY = FALSE) ``` </div>在此塊之后的任何時間點,您都將添加一個樣式塊。如果您希望它多次應用,請將此塊移動到末尾。如果您只希望它應用于塊(我命名)
graphOne,則將其設定為下一個塊。```{r styler,results='asis',engine='js'} // search for class and tags elem = document.querySelector('div.setupCols > pre > code'); // remove hashtags elem.innerHTML = elem.innerHTML.replace(/#{2}/g, ''); // add newlines between summaries elem.innerHTML = elem.innerHTML.replace(/\s{9}\n/g, '<br /><br />') ```如果你行內運行這個塊,你將不會得到任何輸出。但是,當您
knit.我還在這里添加了一些文本,但這就是它的樣子:

如果您想查看 Javascript 正在做什么,您可以添加
eval = F和knit. 這就是它的樣子:
如果我錯過了什么或者您有任何問題,請告訴我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414694.html標籤:
上一篇:將SpatRaster物件轉換為SpatialGridDataFrame
下一篇:在R中繪制地球透視圖上的地理資料
