R对导入数据进行的基本方差分析产生以下错误:model.frame.default中的错误:变量'的类型无效(NULL);输入$var3';

R对导入数据进行的基本方差分析产生以下错误:model.frame.default中的错误:变量'的类型无效(NULL);输入$var3';,r,shiny,anova,R,Shiny,Anova,我对R和R Shining非常陌生,目前我正在开发一个基本的shinyapp,它允许用户导入数据集,然后使用selectInputs对数据进行方差分析,以确定自变量和因变量。但是,每当我尝试执行anova函数时,我都会收到以下错误: 警告:model.frame.default中出错:变量“input$var3”的类型无效(NULL) 我还收到了以下错误: 警告:对比度错误您的应用程序中存在几个问题 只要您的输入变量尚未初始化,即启动应用程序时,在选择“Stats”之前,它们都是NULL。这就是

我对R和R Shining非常陌生,目前我正在开发一个基本的shinyapp,它允许用户导入数据集,然后使用selectInputs对数据进行方差分析,以确定自变量和因变量。但是,每当我尝试执行anova函数时,我都会收到以下错误:

警告:model.frame.default中出错:变量“input$var3”的类型无效(NULL)

我还收到了以下错误:


警告:对比度错误您的应用程序中存在几个问题

  • 只要您的输入变量尚未初始化,即启动应用程序时,在选择“Stats”之前,它们都是
    NULL
    。这就是为什么在model.frame.default中出现警告
    警告:错误:变量'input$var3'的类型无效(NULL)
    。为了防止这种情况,您可以添加例如
    req(输入$var3)

  • 选择“Stats”后,您的输入变量将被初始化。但是,输入变量只是变量的名称,即它们是字符向量。您试图做的是,例如,
    aov(“mpg”~as.factor(“mpg”)+as.factor(“mpg”),data=mtcars)
    。正如您可以在R控制台中检查的那样,这将不起作用。要实现这一点,您必须将输入变量转换为“符号”。我下面的方法只是将公式设置为字符串,然后通过
    as.formula
    将其转换为公式

  • renderText
    将不适用于模型输出。为此,请使用
    renderPrint

  • 试试这个:

      output$stats <- renderPrint({
        req(input$var1)
        req(input$var2)
        req(input$var3)
        fmla <- paste(input$var3, "~",
                      "as.factor(", input$var1, ")", "+",
                      "as.factor(", input$var2, ")")
        summary(aov(as.formula(fmla), data = fileData()))
      })
    

    output$stats哇,谢谢!这是完美的,现在更有意义了。它在我的应用程序中运行良好,我将来会使用它。
    
      output$stats <- renderPrint({
        req(input$var1)
        req(input$var2)
        req(input$var3)
        fmla <- paste(input$var3, "~",
                      "as.factor(", input$var1, ")", "+",
                      "as.factor(", input$var2, ")")
        summary(aov(as.formula(fmla), data = fileData()))
      })