在我的Rmd生成的html文件中包含图像会破坏我的应用程序中的表显示

zf2sa74q  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(144)

当我在我的html文件中包含图像时,通过编织一个Rmd文件生成,它破坏了我闪亮的应用程序的行为。我在下面创建了一个简单的例子。
当Rmd文件包含图像时,includeHTML()将显示html文件,但不显示表格,而includeMarkdown()不显示任何内容。
当Rmd包含图片时,includeHTML()将显示html文件,但不显示表格,includeMarkdown()将正确显示html文件和表格。
我怀疑有一些冲突的html,java的css,但我不知道如何解决什么。任何帮助将是惊人的!
我不是特别想使用iframe。

  1. library(shiny)
  2. library(DT)
  3. ui <- fluidPage(
  4. titlePanel("Minimal Example"),
  5. sidebarLayout(
  6. sidebarPanel(
  7. tabsetPanel(
  8. id = 'tabset',
  9. tabPanel("Tab1",
  10. checkboxInput("checkbox", "Show Image")
  11. )
  12. )
  13. ),
  14. mainPanel(
  15. uiOutput("conditionalPanel"),
  16. )
  17. )
  18. )
  19. server <- function(input, output, session) {
  20. output$conditionalPanel <- renderUI({
  21. if(input$checkbox) {
  22. tagList(
  23. conditionalPanel(
  24. condition = "input.checkbox == true",
  25. dataTableOutput("table")
  26. ),
  27. conditionalPanel(
  28. condition = "input.checkbox == true",
  29. # includeHTML("./www/README.html")
  30. includeMarkdown("./www/README.html")
  31. )
  32. )
  33. }
  34. })
  35. output$table <- renderDataTable({
  36. datatable(
  37. data.frame(
  38. Name = c("Anna", "Barbara", "Carlos", "David"),
  39. Value = c(23, 45, 12, 67)
  40. )
  41. )
  42. })
  43. }
  44. shinyApp(ui, server)
vfhzx4xs

vfhzx4xs1#

在Shiny中,includeHTML用于HTML fragment。这意味着一个没有<html></html>元素和没有header的HTML“片段”。否则,如果这是一个完整的HTML文件,它会中断Shiny应用程序。所以你必须在README.Rmd文件的YAML头中设置output: html_fragment

  1. ---
  2. output: html_fragment
  3. ---
  4. *Here is a table:*
  5. ```{r cars, echo=FALSE}
  6. knitr::kable(summary(cars))

Here is a plot:

  1. plot(pressure)
  1. 编织它,您将得到HTML片段**README.html**,您可以安全地将其包含在`includeHTML`中:

library(shiny)
library(DT)

ui <- fluidPage(
titlePanel("Minimal Example"),
sidebarLayout(
sidebarPanel(
tabsetPanel(
id = 'tabset',
tabPanel("Tab1",
checkboxInput("checkbox", "Show Image")
)
)
),
mainPanel(
uiOutput("conditionalPanel"),
)
)
)

server <- function(input, output, session) {
output$conditionalPanel <- renderUI({
if(input$checkbox) {
tagList(
conditionalPanel(
condition = "input.checkbox == true",
DTOutput("table")
),
conditionalPanel(
condition = "input.checkbox == true",
includeHTML("./README.html")
)
)
}
})

output$table <- renderDT({
datatable(
data.frame(
Name = c("Anna", "Barbara", "Carlos", "David"),
Value = c(23, 45, 12, 67)
)
)
})
}

shinyApp(ui, server)

  1. ![](https://i.stack.imgur.com/G4DZS.png)
展开查看全部

相关问题