Как интегрировать функцию ShinyR с пользовательским интерфейсом? - PullRequest
0 голосов
/ 27 апреля 2019

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

library(seqinr)
library(shiny)
# User interface
ui <- fluidPage(
  titlePanel("Welcome to DotMatcher Plot App"),
  sidebarLayout(
    sidebarPanel (
      fileInput("protein1",
                label = "Choose a file",
                multiple = FALSE,
                accept =c("text", "fasta")),
      fileInput( "protein2",
                 label = NULL,
                 multiple=FALSE,
                 accept =c("text", "fasta"))
    ),
    # Outputs
    mainPanel(
      plotOutput(outputId = "plot")
    )
  )
)
)
# Server Function
server <- function(input, output) {
  movies_subset1 <- reactive({
    req(input$protein1)})
  movies_subset2 <- reactive({
    req(input$protein2)
  })
  gl<-pairwiseAlignment(pattern = movies_subset1, subject = movies_subset2)
  output$plot <- renderPlot({
    print (gl)

    })

}
# App 
shinyApp(ui = ui, server = server)

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

После предварительной обработки у меня сработало, но теперь я столкнулся с проблемой в моей функции вывода

library(seqinr)
library(shiny)
# User interface
ui <- fluidPage(
  titlePanel("Welcome to DotMatcher Plot App"),
  sidebarLayout(
    sidebarPanel (
      fileInput("protein1",
                label = "Choose a file",
                multiple = FALSE,
                accept =c("text", "fasta")),
      fileInput( "protein2",
                 label = NULL,
                 multiple=FALSE,
                 accept =c("text", "fasta"))
    ),
    # Outputs
    mainPanel(
      plotOutput(outputId = "plot")
    )
  )
)

# Server Function
server <- function(input, output) {
  seq1 <- reactive({
    req(s2c(paste(input$protein1, collapse = "")})
  seq2 <- reactive({
    req(s2c(paste(input$protein2, collapse = "")
  })

  output$plot <- renderPlot({



    dotPlot(seq1(), seq2(), wsize = 100, wstep = 100, nmatch = 100)

  })

}
# App 
shinyApp(ui = ui, server = server)
0 голосов
/ 27 апреля 2019

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

library(seqinr)
    library(shiny)
    # User interface
    ui <- fluidPage(
        titlePanel("Welcome to DotMatcher Plot App"),
        sidebarLayout(
            sidebarPanel (
                fileInput("protein1",
                          label = "Choose a file",
                          multiple = FALSE,
                          accept =c("text", "fasta")),
                fileInput( "protein2",
                           label = NULL,
                           multiple=FALSE,
                           accept =c("text", "fasta"))
            ),
            # Outputs
            mainPanel(
                plotOutput(outputId = "plot")
            )
        )
    )

    # Server Function
    server <- function(input, output) {
        seq1 <- reactive({
            req(input$protein1)})
        seq2 <- reactive({
            req(input$protein2)
        })

        output$plot <- renderPlot({

    print(seq1)
    print(seq1())

            dotPlot(seq1(), seq2(), wsize = 100, wstep = 100, nmatch = 100)

        })

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