Был ключ к тому, какая часть кода была ошибочной, и вы были правы, что это было в разделе на стороне сервера.Страница, которая отображается (как только вы исправили ошибку в коде, который ссылается на несуществующее седьмое имя), а после также исправила ошибочную конструкцию формулы для вызова lm, затем отобразилась без ошибки:
Call:
lm(formula = form, data = table1_1)
Residuals:
1
1
No Coefficients
Residual standard error: 1 on 1 degrees of freedom
Потому что в коде на стороне клиента не было ничего, что требовало бы выбора переменной на стороне x.Итак, вот как исправить первую существенную ошибку, связанную с построением формулы:
server <- shinyServer(function(input,output){
output$summary <- renderPrint({
model <- reactive({ form <- as.formula( paste( names(table1_1)[names(table1_1) %in% input$y], "~", paste(names(table1_1)[names(table1_1) %in% input$x], collapse="+")))
print(form)
lm(form, data=table1_1)
})
summary(model())
})
})
shinyApp(ui,server)
Объекты формулы должны быть построены либо синтаксически правильно, и их часто нужно очищать с помощью R, пропуская через as.formula
, если нужны аргументыбыть рассчитанным.В действительности объекты формулы не должны искать значения из вызывающей среды.
(И после того, как я вставил это выражение в конструкцию формулы, я подумал, что было бы неплохо определить переменную, содержащую именаtibble
объект.)
Теперь он работает, хотя при первом открытии страницы он не является информативным об этом факте.Если щелкнуть y-переменную, реактивный цикл успешно добавит ее в формулу и вычислит результат.