【问题标题】:Error in R: object of type 'closure' is not subsettableR中的错误:“闭包”类型的对象不是子集
【发布时间】:2017-02-13 07:54:55
【问题描述】:
require(shiny)
setwd("C://Users//Harshad//Desktop//Equiskill - BA")
cars <- read.table(file = "cars.csv", sep = ",", header = TRUE, quote="")
cars <- cars[,2:7]

ui <- fluidPage(      
   "Simple Linear Regression Modelling",

    sidebarPanel(width = 2,

    selectInput(inputId = "d_var",
                label = "Select dependent variable:",
                choices = c(names(cars))),
    selectInput(inputId = "ind_var",
                label = "Select independent variable:",
                choices = c(names(cars)))
  )
   ,
  tableOutput("summary")    
)

server <- function(input,output) {    
   model <-  reactive (lm(input$d_var ~ input$ind_var, data=cars))    
    output$summary <- renderDataTable(
      {  summary(model)    }
      ) 
}
shinyApp(ui <- ui, server <- server)

在 R 中执行代码时,我收到一个错误“'closure' 类型的对象不是子集”。请帮助。

在 R 中执行代码时,我收到一个错误“'closure' 类型的对象不是子集”。请帮助。

【问题讨论】:

标签: r shiny


【解决方案1】:

这样的事情应该可以解决问题

require(shiny)
setwd("C://Users//Harshad//Desktop//Equiskill - BA")
cars <- read.table(file = "cars.csv", sep = ",", header = TRUE, quote="")
cars <- cars[,2:7]

ui <- fluidPage(      
  "Simple Linear Regression Modelling",
  sidebarPanel(width = 2,
               selectInput(inputId = "d_var",label = "Select dependent variable:",choices = c(names(cars))),
               selectInput(inputId = "ind_var",label = "Select independent variable:",choices = c(names(cars)))
  ),verbatimTextOutput("summary")    
)

server <- function(input,output) {    
  model <- reactive({
    lm(cars[,names(cars) %in% input$d_var] ~ cars[,names(cars) %in% input$ind_var])
    })

  output$summary <- renderPrint({summary(model())}) 
}
shinyApp(ui <- ui, server <- server)

【讨论】:

  • 这是在闪亮应用程序中定义 lm 函数的标准语法吗?就像你在上面的例子中定义的那样。模型
  • 不,但是你正在做的子设置部分需要这样。 lm 需要包含信息的对象来完成其工作。 input$d_var 是一个单字符对象,它不是它所需要的。如果要取出名称,可以将模型定义放入单独的变量中。
  • 感谢您的回复。如果我必须只显示汇总函数的某些元素,如 r 平方、显着性因子等,而不是显示整个输出,该怎么办?实际上我正在尝试为线性回归创建一个闪亮的应用程序,但我对 R 比较陌生。
  • 您可以看到如何使用美元符号访问lm 函数的元素。然后,您可以将其组合成任何您想要的东西。在进入 shiny 之前,请尝试将所有内容都写入 R
  • 你一直在犯同样的错误,所有的reactive变量都是函数,所以它们的末尾必须有(),所以不是model而是model()
猜你喜欢
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2018-06-22
  • 2018-02-08
相关资源
最近更新 更多