繁体   English   中英

从公式参数到`lm`的R闪亮应用程序错误消息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM