Вывод изображения в блестящем приложении - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь включить изображение в блестящее приложение.Я хочу: «если это график типа 1« это изображение », если это график типа 0« это другое изображение ». Я знаю, что мне нужно поместить файлы jpg в папку, где находится app.R, а затем вызвать егоно я не знаю как.

Это код, который я использовал до сих пор (он работает), я просто должен включить изображения в рендер.

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(

  # Application title
  titlePanel("Myapp"),

  #Inputs
  dateInput(inputId = "dob", label="Birth"),
  dateInput(inputId = "ad", label="Date"),
  actionButton("Submit", icon("fas fa-magic"), label="Submit"),


  #Outputs
  textOutput(outputId = "textR"),
  imageOutput(outputId = "imageR1"),
  imageOutput(outputId="imageR2")
)



# Define server logic required to draw a histogram
server <- function(input, output) {
  #my output should be named textR and imageR1, imageR2

  observeEvent(input$Submit, 
           output$textR<-renderText({
             v1<-as.numeric(as.Date(input$ad,format="%Y/%m/%d") - as.Date(input$dob, format="%Y/%m/%d"))/30.5
             value_v1<-ifelse(v1>48, "type1", "type2")
             print(value_v1)
           }))

}

# Run the application 
shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 30 мая 2018

Неправильно определять выходной объект внутри observeEvent.В этом случае, независимо от выбора способа переключения изображений, я бы посоветовал использовать eventReactive - назовем это myval.Это создает реактив, который изменяется только при наступлении определенного события, в этом случае нажмите кнопку «Отправить».Затем мы можем сослаться на это в теле оператора renderText, так что это может просто стать:

  output$textR<-renderText({
    print(myval())
  })

Во-вторых, для вывода изображений вы должны поместить их в каталог www,см здесь .Затем мы можем создать элемент пользовательского интерфейса с renderUI и UIOutput, в котором мы используем значение нашего eventReactive myval(), чтобы выбрать изображение для отображения.

Рабочий пример приведен ниже.Обратите внимание, что я сохранил его как app.R и использовал структуру папок по указанной ссылке, поэтому:

| shinyApp/
    | app.R
    | www/
       | zorro.jpg
       | notzorro.jpg

Надеюсь, это поможет!

enter image description here


library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(

  # Application title
  titlePanel("Myapp"),

  #Inputs
  dateInput(inputId = "dob", label="Birth"),
  dateInput(inputId = "ad", label="Date"),
  actionButton("Submit", icon("fas fa-magic"), label="Submit"),

  #Outputs
  textOutput(outputId = "textR"),
  uiOutput(outputId = "my_ui")
)



# Define server logic required to draw a histogram
server <- function(input, output) {

    myval <- eventReactive(input$Submit,
                         {
                           v1<-as.numeric(as.Date(input$ad,format="%Y/%m/%d") - as.Date(input$dob, format="%Y/%m/%d"))/30.5
                           return(ifelse(v1>48, "type1", "type2"))
                         })

  output$textR<-renderText({
    print(myval())
  })

  output$my_ui<-renderUI({
    if(myval()=='type1')
      img(src='zorro.jpg', height = '300px')
    else
      img(src='notzorro.jpg', height = '300px')
  })

}

# Run the application 
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...