2016-03-04 71 views
2

我需要設置一個報告文檔,其中I 在項目上循環並生成單個圖形。當使用R在jupyter我閱讀關於display_markdown和display_html在這裏使用repr和IRDisplay:How to render LaTeX/HTML in Jupyter (R)?這完美地完成了在代碼單元格內打印Markdown的工作。但不幸的是訂單被毀掉了。在jupyter中使用R:display_markdown在循環中

如果我這樣做:

library(IRdisplay) 
library(repr) 
options(repr.vector.quote=FALSE) 

for (i in 1:3) { 
    print(paste("print before headline in run:",i)) 

    display_markdown(paste("# Headline in run:",i)) 

    cars <- c(i, 3, 6, 4, 9) 
    plot(cars) 

    print(paste("print after headline in run:",i)) 
} 

在jupyter最終的結果得到混合。的頭條新聞出現在打印線和上述曲線圖,:

loop result of above code

ř版本3.2.2(2015年8月14日)

+1

難道這不就是一個甜蜜的,甜蜜的正義爲使用難以管理的惡作劇的筆記本電腦vs有序的R markdown文檔而發揮作用嗎? :-) – hrbrmstr

+1

我是一個有需求和慾望的人。 Rmarkdown在這方面的作品,但性感的筆記本電腦是如此誘人。 – sektionschef

+0

Re爲什麼標題在「標題之前」打印前面:irkernel使用評估來執行代碼,並且由於for循環只在「循環」之外或處理繪圖時(或在調用消息時)評估「發佈」標準輸出/警告)。看到這個PR:https://github.com/hadley/evaluate/pull/62。目前,您可以使用消息而不是打印強制文本元素的順序。但這並不能解釋文本和圖表的順序:-(爲此我打開https://github.com/IRkernel/IRkernel/issues/295 –

回答

2

它的工作原理,如果我堅持這裏定義IRdisplay的顯示功能:https://github.com/IRkernel/IRdisplay/blob/master/R/display.R在循環中。

library(IRdisplay) 
library(repr) 

for (i in 1:3) { 
    display(paste("print before headline in run:",i)) 

    display_markdown(paste("# Headline in run:",i)) 

    cars <- c(i, 3, 6, 4, 9) 

    png(paste("plots_",i,".png", sep=""),width=1480, height=1240, res=120) 
     plot(cars, main=as.character(i)) 
    dev.off() 

    display_png(file=paste("plots_",i,".png", sep=""))  

    display(paste("print after headline in run:",i)) 
}