Я пытаюсь использовать Shiny для создания адаптивного приложения для получения описательной статистики с использованием пакета R onewaytests
.
После выбора переменных столбца для использования в описательной статистике я не могу успешно использовать их длясоздайте объект формулы, например describe(parktime ~ parkstop, test)
. Я пробовал renderDataTable
, renderTable
, renderText
и renderUI
. Ничего не работает, и мне выдается сообщение об ошибке:
Предупреждение: ошибка в описании: Имя переменной группы не совпадает с именами переменных в данных. Групповая переменная должна быть одним фактором. [Нет трассировки стека]
Вот мой ошибочный код:
library(shiny)
library(onewaytests)
# create test data
test <- data.frame("likert" = c(1,1,1,3,1,3,2,2,1,4,2,2,3,3,4,4,5,5),
"parkspot" = c(1,1,1,4,1,2,1,3,1,4,3,3,2,2,1,1,2,4),
"parktime" = c(5,10,5,13,5,1,10,5,1,15,2,43,2,3,4,2,11,1),
"walktime" = c(5,5,30,5,3,1,10,5,5,5,5,12,11,2,3,4,4,3))
# likert and parkspot to factor
test[, 1] <- as.factor(test[, 1])
test[, 2] <- as.factor(test[, 2])
# give names
levels(test$likert) <- list("Extremely familiar" = 1,
"Moderately familiar" = 2,
"Somewhat familiar" = 3,
"Slightly familiar" = 4,
"Not at all familiar" = 5)
levels(test$parkspot) <- list("On the side of street" = 1,
"Parking lot" = 2,
"Parking garage" = 3,
"Other" = 4)
# This runs fine outside of shinyApp
describe(walktime ~ parkspot, test)
# shinyApp code
server <- function(input, output){
# some unsuccessful tests
output$test1 <- renderTable({
describe(input$resp ~ input$expl, test)
})
output$test2 <- renderText({
paste(input$resp,
input$expl)
})
output$test3 <- renderDataTable({
describe(input$resp ~ input$expl, test)
})
}
ui <- shinyUI(fluidPage(
titlePanel("thing"),
sidebarLayout(
sidebarPanel(
#walktime or parktime
selectInput("resp",
"response (continuous)",
names(test[-c(1,2)])),
# all others
selectInput("expl",
"explanatory (ordinal)",
names(test[-c(3,4)]))
),
mainPanel(
tableOutput("test1"),
verbatimTextOutput("test2"),
dataTableOutput("test3")
)
)
))
shinyApp(ui = ui, server = server, options = list("test.mode"))
Возможно ли это? Похоже, describe()
не работает внутри приложения. Запуск onewaytests 'describe()
вне приложения Shiny работает совершенно нормально, вот так:
n Mean Std.Dev Median Min Max 25th 75th Skewness Kurtosis NA
On the side of street 8 8.125000 9.109453 5 3 30 3.75 6.25 2.0290427 5.475618 0
Parking lot 4 4.500000 4.509250 3 1 11 1.75 5.75 0.9067530 2.122279 0
Parking garage 3 7.333333 4.041452 5 5 12 5.00 8.50 0.7071068 1.500000 0
Other 3 4.333333 1.154701 5 3 5 4.00 5.00 -0.7071068 1.500000 0