2017-02-23 14 views
0

Rmarkdownで作成したテーブルをShinyアプリケーションのタブに追加しようとしています。なんらかの理由で、マークダウンはHTMLにニットされて単独で表示されてもうまくいくように見えますが、テーブルCSSはMarkdownやHTMLとしてShinyに挿入されても機能しません。 (HTMLとしてプレビューされる、またはtestdoc.RmdがHTMLに編成する際に、以下のtestdoc.mdときすなわち)どのようにそれはそれは自分自身でどのように見えるか/はずShinyアプリケーションにマークダウンテーブルを含めると、CSSが破損しているようです。

How it should look/how it looks on its own それはシャイニーでどのように見えますか、第一、第二あなたが輝いてアプリで、CSSは、最初のテーブルに分割され、幾分秒(不良位置合わせ)で壊れ、それを見ることができるshiny::includeHTML

How it comes out in Shiny

を使用して、shiny::includeMarkdownを使用。何らかの理由でincludeHTMLが何らかの理由でスライダーや選択ボックスを動作させ、カスタムCSSをタブでキャンセルできるようにするなど、私のアプリで他の問題を引き起こすので、includeMarkdownincludeHTMLの代わりに使用することを強くお勧めします。

:あなたはなぜマークダウンを使用していますか?なぜ光沢のあるテーブルをrenderTableを使って入れてみませんか?この特定のタブは、多くのテキストと複数のテーブルを持つドキュメンテーションタブであり、さまざまな目的のためにずっと前から作成されています。また、最終的に含まれる他のマークダウン文書もあります。それを再作成したり、分割してShinyテーブルができるようにすることなく、それらをShinyアプリに挿入できるのは良いことです。

これは簡単な修正かもしれませんが、私はCSSについてよく知らないです。

以下のとおりです。

app.R:

library(shiny) 

server <- function(input,output){ 

} 
ui <- fluidPage(titlePanel("Test page"), 
    includeMarkdown("testdoc.md"), 
    includeHTML("testdoc.html") 
) 

shinyApp(ui=ui,server=server) 

testdoc.Rmd:

Test: 

```{r table1, echo=FALSE} 
table1 <- matrix(c(-1,0,1,.391,.144,.059,.720,.425,.230,.945,.878,.796,1,1,1),nrow=3) 
colnames(table1) <- c("Response","1","2 or less","3 or less","4 or less") 
kable(table1,caption="Table 1") 
``` 

testdoc.md(すなわちknitr::knit('testdoc.Rmd')の結果。):含まれていない

Test: 


| Response|  1| 2 or less| 3 or less| 4 or less| 
|--------:|-----:|---------:|---------:|---------:| 
|  -1| 0.391|  0.720|  0.945|   1| 
|  0| 0.144|  0.425|  0.878|   1| 
|  1| 0.059|  0.230|  0.796|   1| 

testdoc.html長さはここではありますが、testdoc.Rmdからknitrを使用して再作成するのは簡単です。

+0

1つの問題は、あなたが二' html'、 'head'と' body'を得るということです一部のjavascriptが2回含まれているため、アプリの他の部分で問題が発生する可能性があります。 – NicE

答えて

1

非完璧な回避策は、このようiframeを使用することです:値下げ文書で `includeHTML`を使用して

library(shiny) 

server <- function(input,output){ } 
ui <- fluidPage(
    tags$iframe(src = 'testdoc.html', # put testdoc.html to /www 
       width = '100%', height = '800px', 
       frameborder = 0, scrolling = 'auto') 
) 

shinyApp(ui=ui,server=server) 
関連する問題