执行闪亮代码时,我收到错误为“警告:grepl:无效'模式'参数错误”和“错误[维度数量不正确”(在UI中)。请帮忙。下面是代码的片段。当我不评论最后一行时,我收到错误
library(MASS)
library(shinythemes)
library(shiny)
library(ggplot2)
mass.tmp <- data(package = "MASS")[3]
mass.datasets <- as.vector(mass.tmp$results[,3])
ui <- fluidPage(
theme = shinytheme("superhero"),
titlePanel("Linear Regression Modelling"),
sidebarLayout(
sidebarPanel(
selectInput("dsname", "Dataset:",choices = c(mass.datasets)),
uiOutput("y_axis"),
uiOutput("x_axis")
) ,
mainPanel(
tags$br(),
tags$br(),
"R-squared:",
tags$span(tags$b(textOutput("rsquared")),style="color:blue")
)
)
)
server <- function(input, output) {
output$x_axis <- renderUI({
col_opts <- get(input$dsname)
selectInput("x_axis2", "Independent Variable:", choices = c(names(col_opts)))
})
cols2 <- reactive({
col_opts2 <- get(input$dsname)
#names(col_opts2)[!grepl(input$x_axis2, names(col_opts2))]
})
output$y_axis <- renderUI({
selectInput("y_axis2", "Dependent Variable:", choices = c(names(cols2())))
})
model <- reactive({
#lm(input$dsname[,names(input$dsname) %in% input$y_axis2] ~ input$dsname[,names(input$dsname) %in% input$x_axis2])
#tmp <- paste(input$y_axis2,"~",input$x_axis2,sep = " ")
lm( input$y_axis2 ~ input$x_axis2 , data = input$dsname )
})
model_summary <- reactive({summary(model())})
output$rsquared <- renderText({ model_summary()$r.squared })
}
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
是的,那更好。 有多个错误: 我们不应该为你调试它,但这里有一些指针。 这应该可以帮助你找到它们。
1)
您正在使用:input$x_axis
和input$y_axis
,但最后将其定义为“2”。所以要适应它。
2) 你应该定义:
cols2 <- reactive({
col_opts2 <- get(input$dsname)
names(col_opts2)[!grepl(input$x_axis2, names(col_opts2))]
})
在renderUI
函数之外。
3)此外,这个片段似乎有问题:
names(col_opts2)[!grepl(input$x_axis2, names(col_opts2))]
最后,我会检查你是否制作了NULLS并通过!is.null()
禁止了这一点。
编辑:问题更新:
您尝试按字符串构建lm()
公式,您可以在闪亮之外进行测试:无效。
您应该使用formula()
函数并提出类似的内容:
lm(formula(paste(input$y_axis2, input$x_axis2, sep =" ~ ")), data = get(input$dsname))