如何在闪亮的应用

时间:2018-03-26 16:50:50

标签: r shiny

已编辑:我已移除调用以从data.world获取数据集,而是输入mtcars数据集,该数据集产生相同的对比度错误,只能应用于2的因子或更多

我正在学习闪亮,并希望创建一个图,给出a)整个图的线性回归线和b)图上刷点的线性回归线。我甚至愿意只显示拉丝点回归的摘要统计数据。

以下代码

  • 绘制x和y的用户输入
  • 允许用户刷点
  • 创建一个刷子点的反应数据集
  • 显示所有积分的回归摘要
  • 显示应用画笔时刷漆点的反应数据集的数据表
  • 因为我不理解的原因被要求对那些刷点进行回归时发生故障......

代码:

library(shiny)
library(ggplot2)
library(data.world)
library(dplyr)
library(tidyverse)
library(DT)

#show data from data.world
gcdata_ds <- "https://data.world/llawsonwork/gcdata"
#gcdatafile <- data.world::query(
  #qry_sql("SELECT * FROM gcdataclean"),
  #dataset =gcdata_ds
#)

#datafile <- gcdatafile
#so that you will not need data.world
datafile <-mtcars


# Define UI for application that draws a histogram
ui <- fluidPage(

  #Application Layout
  sidebarLayout(

    #Inputs
    sidebarPanel(

      #select variable for y-axis
      selectInput(inputId = "ya",
                 label = "Y-axis",
                 choices = colnames(datafile),
                 selected = "life_expec"
                 ),

      #Select Variable for x axis
      selectInput(inputId = "xa",
                 label = "X-axis",
                 choices = colnames(datafile),
                 selected = "life_expec"
      )
    ),

    #output
    mainPanel(
      plotOutput(outputId = "guilfordplot", brush = "plot_brush"),
      htmlOutput(outputId = "summary"), # summary of lin regress all points
      dataTableOutput(outputId = "brushedtracts"), # data table to make sure brushed points are updating correctly
      textOutput(outputId = "brushedreg") # NOT Working summary of lin reg brushed points 
    )
  )
)

#define server function

server <- function(input, output){

#this was useful in creating the regression model as X was always column 1 and Y was always column  in this dataframe
  datasubset <- reactive({
    req(input$xa)
    req(input$ya)
    data.frame(X = datafile[input$xa], Y = datafile[input$ya])
  })

 #create datasubset of the brushed points
  brushedsubset <- reactive({
    req(input$xa)
    req(input$ya)
    req(input$plot_brush)
    brushedPoints(datafile, brush = input$plot_brush) %>%
      select(input$xa, input$ya)
  })

  #Create plot
  output$guilfordplot <- renderPlot({
    ggplot(data = datafile, aes_string(x = input$xa, y = input$ya)) +
      geom_point() + geom_smooth(method = "lm")
  })

  #create summary file
  output$summary <- renderUI({
    model = lm(datasubset()[,2] ~ datasubset()[,1], data = datasubset())
    r2 = format(summary(model)$r.squared, digits = 3)
    txt = paste("The equation of the line is :\nY = ",
                round(coefficients(model)[1],0), " + ",
                round(coefficients(model)[2], 5), "X")

   # str_3 <- format(coef(m)[1], digits = 3)

    str_1 <- txt
    str_2 <- paste("The R^2 value is equal to ", r2)
    HTML(paste(str_1, str_2, sep = '<br/>'))
  })


  # create data table
  output$brushedtracts <- DT::renderDataTable({
   select(brushedsubset(), input$xa, input$ya)
  })

  # create brushed summary stats
  output$brushedreg <- renderText({
    modelbrush = lm(brushedsubset()[,2] ~ brushedsubset()[,1], data = brushedsubset())
    br2 = format(summary(modelbrush)$r.squared, digits = 3)
    btxt = paste("The equation of the line is :\nY = ",
                round(coefficients(modelbrush)[1],0), " + ",
                round(coefficients(modelbrush)[2], 5), "X")
    paste(btxt, ' and the rsquared is: ', br2 )

  })
}

# Run the application 
shinyApp(ui = ui, server = server)

因此,上面的代码适用于给定x和y输入的所有点的摘要回归。

但是这段代码不能用于给我拉线点的线性回归,我无法弄清楚为什么,因为它对于所有点的线性回归的代码几乎相同。

任何帮助都会受到赞赏,并且有一个简单的方法来做线性回归和摘要统计,请告诉我。

0 个答案:

没有答案