Динамическая анова в приложении Shiny, мой ввод неправильный? - PullRequest
0 голосов
/ 30 октября 2018
data(mtcars)
library(stats)
library(shiny)

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

   # Application title
   titlePanel("Old Faithful Geyser Data"),

   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(
            selectizeInput("mtcarsid", "Nehme eine MT Cars category.", choices = colnames(mtcars), selected = colnames(mtcars)[2], multiple = FALSE)
      ),
      # Show a plot of the generated distribution
      mainPanel(
         tableOutput("model"),
         textOutput("text123")
      )
   )
)

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

    output$text123 <- renderText({

    })


    output$model <- renderTable ({

        z <- factor(input$mtcarsid)
        # #print(mtcars[[z]])
        # 
        # print(length(mtcars$mpg))
        # 
        # print(length(mtcars[[z]]))

        x <- aov(mpg ~ factor(mtcars[[z]]), data=mtcars) 
        x <- TukeyHSD(x) 
        print(x)
        x <- as.data.frame(x[[1]][,4] > 0.05)
        x
    })
}

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

Это мое приложение, и на основании ввода моего ввода $ mtcarsid я хочу выполнить анову вкл. апостериорный тест. Тем не менее, моя модель, кажется, совершенно неверно вводит код Кто-нибудь может сказать мне, почему?

aov(mpg ~ factor(cyl), data = mtcars)

Этот код работает нормально. Но когда я просто использую фактор (input $ mtcarsid), я получаю ошибку, что длина ввода отличается (1 против 32).

1 Ответ

0 голосов
/ 30 октября 2018

Одним из решений является преобразование выбранной переменной в коэффициент вне вызова aov ().

  output$model <- renderTable ({
    mtcars[["selected"]] = factor(mtcars[[input$mtcarsid]])
    x <- aov(mpg ~ selected, data=mtcars) 
    x <- TukeyHSD(x) 
    print(x)
    x <- as.data.frame(x[[1]][,4] > 0.05)
    x
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...