Здесь есть несколько проблем.
1) Вы неправильно используете selectInput.Увидеть ниже.По сути, использование таких индексов, как mtcars $ disp [1], создаст статические значения, независимо от того, что выбрано.
2) Вы используете renderTable (), когда вы выводите только одно значение в качестве вывода.Почему бы просто не использовать renderText ()?См. Ниже.
3) Триггер eventReactive (т. Е. Input $ enter) необходимо использовать для создания фрейма данных с входными значениями.Прогноз модели может быть запущен на фрейме данных позже, но первоначальный триггер фактически извлекает значения из selectInput, поэтому триггер должен находиться в том же блоке, где создан фрейм данных.
Это выполнено правильно и произведеножелаемый вывод на моей машине:
library(shiny)
library(ranger)
model <- ranger(mpg ~ disp + hp + wt, data = mtcars)
ui <- fluidPage(
sidebarPanel(
selectInput('disp', 'disp',
unique(mtcars$disp)),
selectInput('hp', 'hp',
unique(mtcars$hp)),
selectInput('wt', 'wt',
unique(mtcars$wt)),
actionButton("enter", label = "Enter Values"),
width = 2
),
mainPanel(
textOutput('mpg')
)
)
server <- function(input, output, session) {
val <- eventReactive(
input$enter, {
data.frame(
disp = input$disp,
hp = input$hp,
wt = input$wt,
stringsAsFactors = F
)}
)
output$mpg <- renderText({
predict(model, val())[[1]]
})
}
shinyApp(ui, server)