闪亮的回归输出
Regression Output in Shiny
我正在尝试生成一个闪亮的应用程序,允许用户 select 因变量和自变量,然后显示 table 和结果。这是我的:
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不能用回归模型中的input的问题
@phil 关于让它工作的评论是正确的。但我觉得需要更多背景信息。
通常,我们 运行 lm
使用不带引号的变量名:
lm(formula= Sepal.Width ~ Sepal.Length, data = iris)
但是 input$rule
和 input$dep
的计算结果为 character
。所以实际上,代码要求 shiny
执行:
lm(formula= "Sepal.Width" ~ "Sepal.Length", data = iris)
这将导致错误。要使用 lm
中的闪亮输入,我们必须转换为符号 (sym
),然后强制进行早期评估 (!!
),如 @phil 所示。
我正在尝试生成一个闪亮的应用程序,允许用户 select 因变量和自变量,然后显示 table 和结果。这是我的:
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不能用回归模型中的input的问题
@phil 关于让它工作的评论是正确的。但我觉得需要更多背景信息。
通常,我们 运行 lm
使用不带引号的变量名:
lm(formula= Sepal.Width ~ Sepal.Length, data = iris)
但是 input$rule
和 input$dep
的计算结果为 character
。所以实际上,代码要求 shiny
执行:
lm(formula= "Sepal.Width" ~ "Sepal.Length", data = iris)
这将导致错误。要使用 lm
中的闪亮输入,我们必须转换为符号 (sym
),然后强制进行早期评估 (!!
),如 @phil 所示。