boxplot
ожидайте boxplot(mpg ~ cyl , data=mtcars)
, тогда как input$p
вернет символьный вектор, как показано ниже
Browse[1]> input$p
[1] "mpg"
Одним из решений является использование as.formula
library(shiny)
ui <- fluidPage(
#use setdiff to avoid this Error 'Error in .subset2: attempt to select less than one element in integerOneIndex'
selectInput("p","p",choices = setdiff(names(mtcars),"mpg")),
plotOutput("myplot"))
server <- function(input, output, session) {
output$myplot <- renderPlot({
m <- paste0('mpg','~',input$p)
boxplot(as.formula(m) , data=mtcars)
})
}
shinyApp(ui, server)
Чтобы получить большеобъяснение / понимание см. этот вопрос