当我在我的html文件中包含图像时,通过编织一个Rmd文件生成,它破坏了我闪亮的应用程序的行为。我在下面创建了一个简单的例子。
当Rmd文件包含图像时,includeHTML()
将显示html文件,但不显示表格,而includeMarkdown()
不显示任何内容。
当Rmd不包含图片时,includeHTML()
将显示html文件,但不显示表格,includeMarkdown()
将正确显示html文件和表格。
我怀疑有一些冲突的html,java的css,但我不知道如何解决什么。任何帮助将是惊人的!
我不是特别想使用iframe。
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",
dataTableOutput("table")
),
conditionalPanel(
condition = "input.checkbox == true",
# includeHTML("./www/README.html")
includeMarkdown("./www/README.html")
)
)
}
})
output$table <- renderDataTable({
datatable(
data.frame(
Name = c("Anna", "Barbara", "Carlos", "David"),
Value = c(23, 45, 12, 67)
)
)
})
}
shinyApp(ui, server)
1条答案
按热度按时间vfhzx4xs1#
在Shiny中,
includeHTML
用于HTML fragment。这意味着一个没有<html></html>
元素和没有header的HTML“片段”。否则,如果这是一个完整的HTML文件,它会中断Shiny应用程序。所以你必须在README.Rmd文件的YAML头中设置output: html_fragment
:Here is a plot:
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)