【发布时间】:2020-08-18 03:27:56
【问题描述】:
我正在尝试生成一个闪亮的应用程序,它允许用户选择一个因变量和自变量,然后显示一个带有结果的表格。这就是我所拥有的:
rule <- c("bb_rule", "pp_rule", "cb_rule")
dependent <- c("inning_fr", "innings_se", "inning_rain")
ui <- navbarPage(theme = shinytheme("simplex"), "App",
tabPanel("Regression Results",
fluidPage(
h3("Have Rule Changes Transformed ODI Cricket?"),
tableOutput("regression"),
sidebarPanel(
selectInput("depInput", "Dependent Variable",
choices=dependent),
selectInput("ruleInput", "Rule",
choices=rule)
)
))
)
server <- function(input, output) {
load("./data/data.RData")
output$regression <-
renderTable({
data %>%
lm(input$depInput ~ input$ruleInput, data = .) %>%
tidy(conf.int=TRUE) %>%
select(Variable = term,
Estimate = estimate,
`Lower Bound` = conf.low,
`Upper Bound` = conf.high) %>%
gt() %>%
tab_header(title = "Effect of Hours on Reported Approval Rating",
subtitle = "Data from TWT Archive")})
})
}
shinyApp(ui = ui, server = server)
很遗憾,这不起作用,我收到一个错误消息
Error: contrasts can be applied only to factors with 2 or more levels
但是,如果我直接在服务器中输入变量名,一切正常。看来是shiny无法在回归模型中使用输入的问题。
【问题讨论】:
-
这意味着您正在输入一个具有 1 个不同值或为 NA 的自变量。在这里查看答案:stackoverflow.com/questions/18171246/…
-
我查过数据,不是这样的。此外,如果我将 input$depInput 和 input$ruleInput 替换为实际的变量名称,那么它可以正常工作。我认为问题可能在于闪亮没有将输入作为变量读取。但是,我不确定如何解决这个问题。
-
如果你用
lm(!! sym(input$depInput) ~ !! sym(input$ruleInput), data = .)试试呢? -
然后我得到错误:
cannot coerce class ‘"formula"’ to a data.frame -
移除模型的管道。例如,
fit <- lm(..., data = data),然后是tidy(fit, conf.int = TRUE) %>% ...