Создайте t-тест и получите p-значение из csv, используя блестящий - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь создать блестящий интерфейс для ввода CSV, выполнить парный t-тест (равная дисперсия) и сгенерировать тепловую карту из образца набора данных.

Мне удалось создать вкладку загрузки CSV пользовательского интерфейса, однако сейчас я борюсь с моим t-тестом и вкладкой p-значения, я продолжаю получать это сообщение об ошибке:

Предупреждение: Ошибка в: оценка вложена слишком глубоко: бесконечная рекурсия / опции (выражения =)? 90:

   shinyServer <- function(input, output, session){

  data5<- reactive({
    req(input$file1)
    data5<-read.csv(input$file1$datapath,
                   header = input$header,
                   sep = input$sep,
                   quote = input$quote)
  })

   output$contents <- renderTable({

      req(input$file1)
    if(input$disp == "head") {
      return(head(data5()))
    }
    else {
      return(data5())
    }

  })

   ####ttests
   data1 <- reactive({
     data1 <- data.matrix(data5())
   })
   ctrl <- reactive({
     ctrl <- data1()[, c(2:11)]
   })
   smple <- reactive({
     smple <- data1()[, c(12:21)]
   })

   vector1 <- c(1:10)

   pvalue <- c()
   pval <- reactive ({
     for (i in vector1) {
       pvalue[i] <-
         t.test(ctrl()[i, ],
                smple()[i, ],
                paired = FALSE,
                var.equal = FALSE)$p.value

     }
     pvalue
   })

   signif <- reactive({
     sig <- c()
     for (n in vector1) {
       if (pval()[n] < 0.05) {
         sig <- append(sig, n)
       }
     }
     sig
   })

   genecol <- reactive({
     genecol <- data5()[, 1]
   })
   P.Vals <- reactive({
     as.character(P.Vals())
   })

   data6 <- reactive({
     data6 < -data.frame(genecol(), P.Vals())
   })

   output$pvalue <- renderTable(data6())

}

Пользовательский интерфейс:

library(shiny)
library(shinythemes)
ui <- fluidPage(
  ####name app
  titlePanel("Uploading Files"),
  tabsetPanel(
    tabPanel("Upload CSV"),

    # Sidebar
    sidebarLayout(
      sidebarPanel(
        ###input option CSV file
        fileInput(
          "file1",
          "Choose CSV File",
          multiple = TRUE,
          accept = c("text/csv",
                     "text/comma-separated-values,text/plain",
                     ".csv")
        ),


        tags$hr(),

        ###check if CSV has a header
        checkboxInput("header", "Header", TRUE),

        ###format text file into table with separator (comma,semicolon,tab)
        radioButtons(
          "sep",
          "Separator",
          choices = c(
            Comma = ",",
            Semicolon = ";",
            Tab = "\t"
          ),
          selected = ","
        ),


        tags$hr(),

        ####select head of data or all
        radioButtons(
          "disp",
          "Display",
          choices = c(Head = "head",
                      All = "all"),
          selected = "head"
        )

      ),

      ####output panel
      mainPanel(# Output: DATA
        tableOutput("contents"))
    )
  ),


  tabPanel("T-Test",
           h4("pvalue"),
           tableOutput("pvalue"))

)

Я понимаю, что это может быть сложно, но я - новичок, действительно изо всех сил пытаюсь обдумать это

1 Ответ

0 голосов
/ 03 января 2019

Без воспроизводимого примера (см. Комментарии), я думаю, это могут быть ваши реактивы.Т.е.:

data1 <- reactive({
     data1 <- data.matrix(data5())
   })

Реактив похож на функцию, так как он возвращает последнее значение (или что-либо еще, переданное с оператором return).В вашем коде вы, похоже, переназначаете реактив data1 значением внутри себя.Это может быть не так из-за области видимости, но с рекурсивной ошибкой это мое первое предположение.

Я предлагаю вам начать с редактирования ваших реактивов:

data1 <- reactive({
   data.matrix(data5())
})

РЕДАКТИРОВАТЬ:

Найдено:

   P.Vals <- reactive({
     as.character(P.Vals())
   })

Это определенно рекурсивное выражение.Это ваш виновник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...