Предупреждение: ошибка в cat: аргумент 1 (тип "список") не может быть обработан с помощью "cat" [трассировка стека отсутствует] в R shiny webtool - PullRequest
0 голосов
/ 09 июля 2020

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

У меня есть 6 функций R, и я создал 6 комбинаций в виджете selectinput, где каждая комбинация связана с одной функцией R каждая .

6 функций R:

RSCU (файл) {скрипт},

cgr_res (файл) {скрипт},

zscore_cal (файл) {скрипт},

GC_Content7 (файл) {} и

extractmod (файл) {скрипт} все эти 5 функций имеют один и тот же аргумент, то есть входной файл является одним и тем же входным аргументом для всех пяти функций R и последней функции R, которая является 6-я функция R, имеют входные аргументы AMIP (file, n1, n2) 3, здесь входной файл такой же, как оставшиеся 5, но n1 и n2 - разные аргументы, для Аргументы n1 и n2 Я создал виджет numericInput (). Для GC_content7, RSCU, cgr_res и zscore_cal webtool работает нормально, но для двух других функций результаты не отображаются.

     library("shinythemes")
  library("shiny")
  library("htmltools")
  library("bsplus")
  library("DT")
  library("shinyalert")
  library("shinyjs")
  library("shinycssloaders")
  library("dplyr")
  library("data.table")
  library("reshape2")
  library("ggplot2")
  library("plotly")
  library("tools")
  library("readxl")
  library("writexl")
  library("seqinr")
  library("Biostrings")
  library("BiocManager")
  library("entropy")
  library("protr")
  
  source("GS_Source.R")
  
  ui = fluidPage(
    headerPanel(
      h1(tags$strong("Welcome to Web based Tool for Computation of Genomic"),
         style = "font-size: 20pt; line-height: 30pt; width = 100; color: #Red",
         align = "center"),
      windowTitle = "Home"),
    
    sidebarLayout(
      sidebarPanel(
        style = "background-color: #E52B50;",
        tags$style(type='text/css', 
                   "label { font-size: 12px; }",
                   ".selectize-input { font-size: 12pt; line-height: 12pt;}, 
                   .selectize-dropdown { font-size: 12pt; line-height: 12pt; }"),
        
        fileInput('file', HTML('<p style="color:#4A2768; font-size: 12pt"> Choose file to upload the expression data </p>'),accept = c('text/csv','text/comma-separated-values',
                                                                                                                                       'text/tab-separated-values','text/plain','.csv', '.tsv','.fasta')),
        
        selectInput("Signatures", HTML('<p style="color:#4A27C5; font-size: 12pt"> Genome signature </p>'), 
                    c("GC-content","RSCU","CGR","DI-nuculeotide odd Ratio","AAC","AMIP")),
        numericInput("num1",label = "FROM",value = 2),
        numericInput("num2", label = "TO", value = 3),
      
        useShinyalert(),
        actionButton("action", tags$b("Submit")), width = 3,  style="color: #fff; background-color: #337ab7; border-color: #2e6da4"),
      mainPanel(
       verbatimTextOutput("res1"),
        verbatimTextOutput("res2"),
       plotOutput("res3"),
       verbatimTextOutput("res4"),
       verbatimTextOutput("res5"),
       verbatimTextOutput("res6"),
        
      )
    )
  )
  
  server <- function(input, output, session) {
  
  
   
    
  
  df <- eventReactive(input$action, {
                      my_func <- switch(input$Signatures,
                                       
                                       "RSCU" = RSCU,
                                       "CGR"=cgr_res,
                                       "DI-nuculeotide odd Ratio"=zscore_cal,
                                       "GC-content" = GC_content7,
                                       "AAC"=extractAAC_mod,
                      )
                     
                      my_func(input$file$datapath)
                     
  })
  
  df1 <- eventReactive(input$actions, { 
                   my_func1 <- switch(input$signatures, 
                          "AMIP"=AMIP,
  )
     my_func1(input$file$datapath,input$num1,input$num2)
  })
  
  

  
  output$res1 <- renderPrint({
    req(input$Signatures)
    if (input$Signatures=="GC-content") {
      
      df()
    }
  })
  
  output$res2 <- renderPrint({
    req(input$Signatures)
    if (input$Signatures=="RSCU") {
      
      df()
    }
  })
    
  output$res3 <- renderPlot({
    req(input$Signatures)
    if (input$Signatures=="CGR") {
      
      df()
    }
  })
  
  output$res4 <- renderPrint({
    req(input$Signatures)
    if (input$Signatures=="DI-nuculeotide odd Ratio") {
      
      df()
    }
  })                    
  output$res5 <- renderPrint({
    req(input$Signatures)
    if (input$Signatures=="AAC") {
      
      df()
    }
  })
  
  output$res6 <- renderPrint({
   req(input$signatures)
    if(input$signatures=="AMIP"){
      df1()
      }
    
 })
  
  observeEvent(input$action, {
    shinyalert(title = "Please wait for the results...", type = "success")
  })
  
  }
  
  shinyApp(ui, server)

1 Ответ

1 голос
/ 09 июля 2020

Невозможно вернуть список в renderText. Вы можете использовать renderPrint вместо renderText и verbatimTextOutput вместо textOutput.

...