как изменить текст, изменив слайды в shiny

#r #shiny #shinydashboard #shinyapps #shiny-reactivity

#r #блестящий #shinydashboard #shinyapps #shiny-реактивность

Вопрос:

Я хочу изменить название фотографии перед фотографией, изменив каждую фотографию со слайда. Но при использовании следующих кодов идентификатор ввода вообще не отображается. Коды следующие

 library(shinydashboardPlus)

ui<-    dashboardPagePlus(title="Sample",
    dashboardHeaderPlus(title="Sample"),
          
dashboardSidebar(),
dashboardBody(

fluidRow(column(width=6, 
carousel(
id = "AA",
carouselItem(
caption = "Image1",
tags$img(src = "https://cdn.sstatic.net/Sites/stackoverflow/company/Img/logos/so/so-logo.svg?v=a010291124bf", height = 400, width = 400, align="center")
),
carouselItem(
caption = "Image2",
tags$img(src = "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", height = 400, width = 400, align="center")
))), 
column(width=6, uiOutput("Text"))
     )
)
)
server<- function(input, output, session) {
output$Text<-renderText({
Text<-input$AA
as.character(Text)
})
}
shinyApp(ui, server) ```
  

Ответ №1:

Я вижу, как они появляются. Это легче увидеть, если вы измените размер и цвет шрифта:

 library(shinydashboardPlus)
library(shinydashboard)
ui<-    dashboardPagePlus(title="Sample",
                          dashboardHeaderPlus(title="Sample"),
                          
                          dashboardSidebar(),
                          dashboardBody(
                            htmltools::tags$style(
                              ".carousel-caption{
                                font-size: 48px; 
                                color: black;
                              }"
                            ),
                            fluidRow(column(width=6, 
                                            carousel(
                                              id = "AA",
                                              carouselItem(
                                                caption = "Image1",
                                                tags$img(src = "https://cdn.sstatic.net/Sites/stackoverflow/company/Img/logos/so/so-logo.svg?v=a010291124bf", height = 400, width = 400, align="center")
                                              ),
                                              carouselItem(
                                                caption = "Image2",
                                                tags$img(src = "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", height = 400, width = 400, align="center")
                                              ))), 
                                     column(width=6, uiOutput("Text"))
                            )
                          )
)
server<- function(input, output, session) {
  output$Text<-renderText({
    Text<-input$AA
    as.character(Text)
  })
}
shinyApp(ui, server)
  

введите описание изображения здесь
введите описание изображения здесь

Комментарии:

1. Спасибо. Но я хочу показать, какое изображение отображается сейчас, введя $ AA. После этого распечатайте некоторые сведения об этом изображении. Основная проблема заключается в том, что вывод $Text не работает.

Ответ №2:

Поскольку вы используете uiOutput , попробуйте renderUI на стороне сервера. Кроме того, чтобы отображать различный текст на каждом изображении, вам нужно определить renderText и вывести его в carouselItem . Попробуйте этот код

 library(shinydashboardPlus)
library(shinydashboard)
ui<-    dashboardPagePlus(title="Sample",
                          dashboardHeaderPlus(title="Sample"),

                          dashboardSidebar(),
                          dashboardBody(
                                  tags$head(
                                    tags$style(HTML("
                                  #AA{
                                    width:900px;
                                    height:600px;
                                    }
                                .carousel-control{
                                  color:#FF0000;
                                }
                                .carousel-caption{
                                font-size: 48px;
                                color: red;}
                                "))
                                  ),
                            fluidRow(column(width=6,
                                            carousel(
                                              id = "AA",
                                              carouselItem(
                                                caption = "Image1",
                                                textOutput("text1"),
                                                tags$img(src = "https://cdn.sstatic.net/Sites/stackoverflow/company/Img/logos/so/so-logo.svg?v=a010291124bf", height = 400, width = 400, align="center")
                                              ),
                                              carouselItem(
                                                caption = "Image2",
                                                textOutput("text2"),
                                                tags$img(src = "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", height = 400, width = 400, align="center")
                                              ))),
                                     column(width=6, uiOutput("Text"))
                            )
                          )
)
server<- function(input, output, session) {
  output$Text<-renderUI({
    #Text<-as.character(input$AA)
    tagList(
      p("I like to print something over all images", style = "color:blue")
    )
  })
  output$text1 <- renderText("Print something in image 1")
  output$text2 <- renderText("Print something in image 2")

}
shinyApp(ui, server)
  

вывод

Комментарии:

1. Большое спасибо. Но моя проблема заключается в определении того, какое изображение отображается сейчас. но идентификатор ввода не работает.

2. ОК. Я не уверен, как вы планируете идентифицировать отдельные элементы карусели, используя этот идентификатор. Вы можете попробовать определить отдельные текстовые выходные данные для каждого изображения, а затем отобразить его, как показано в обновленном ответе. Зависит от вашего варианта использования.