[英]R shiny app error message from formula argument to `lm`
我正在尝试使用多元线性回归构建一个闪亮的应用程序,该应用程序允许选择多个自变量,但目前停留在服务器端(我猜)。 来自此处的数据(表 1_1)。
数据:
# A tibble: 1,289 x 6
wage female nonwhite union education exper
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 11.55 1 0 0 12 20
2 5.00 0 0 0 9 9
3 12.00 0 0 0 16 15
4 7.00 0 1 1 14 38
5 21.15 1 1 0 16 19
6 6.92 1 0 0 12 4
7 10.00 1 0 0 12 14
8 8.00 1 1 0 12 32
9 15.63 0 0 0 18 7
10 18.22 1 0 0 18 5
# ... with 1,279 more rows
代码:
library(shiny)
library(shinydashboard)
ui <- shinyUI(
dashboardPage(
dashboardHeader(),
dashboardSidebar(
selectInput(inputId = "y", label = "Dependent Variable:", choices = names(table1_1[,c(2:7)])),
selectInput(inputId = "x", label = "Independent Variable(s):",
choices = names(table1_1[,c(2:7)]), multiple = TRUE),
sidebarMenu(
menuItem(text = "Summary", tabName = "summary_lm")
)
),
dashboardBody(
tabItems(
tabItem(verbatimTextOutput("summary"), tabName = "summary_lm")
)
)
)
)
server <- shinyServer(function(input,output){
output$summary <- renderPrint({
model <- reactive({
lm(table1_1[,names(table1_1) %in% input$y] ~ table1_1[,names(table1_1) %in% input$x])
})
summary(model())
})
})
shinyApp(ui,server)
错误:变量“table1_1[, names(table1_1) %in% input$y]”的无效类型(列表)
任何人都可以帮助我解决我的代码出错的地方吗?
有一个线索可以说明代码的哪一部分有问题,并且您认为它在服务器端部分是正确的。 显示的页面(一旦您修复了引用不存在的第 7 个名称的代码中的错误),然后还修复了调用 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)
公式对象需要在语法上正确构建,并且如果需要计算参数,它们通常需要通过传递as.formula
来进行 R 清理。 公式对象实际上不应该从调用环境中查找值。
(在将公式构造的表达式粘贴在一起后,我认为定义一个保存tibble
对象名称的变量是个好主意。)
尽管第一次出现页面时,它现在可以工作,但它并没有提供有关该事实的信息。 如果单击 y 变量,则反应循环会成功将其添加到公式中并计算结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.