2015-01-04 24 views
8

Shiny ile deney yapıyorum ve bunu seviyorum. Öğrencilerin bir csv dosyası yükledikleri ve sonra bağımlı değişkenler ve bağımsız değişkenler seçtikleri ve daha sonra R doğrusal bir gerileme hesapladığı küçük bir uygulama geliştirdim. İyi çalışıyor.Parlak: Düğmeleri sadece dosya yüklendikten sonra göster

http://carlosq.shinyapps.io/Regresion

[İsterseniz bunu test etmek this file kullanabilirsiniz: Ben de yüklendiği var. ui.R

# server.R 
library(shiny) 

shinyServer(function(input, output) { 

    filedata <- reactive({ 
    infile <- input$file1 
    if (is.null(infile)){ 
     return(NULL)  
    } 
    read.csv(infile$datapath) 
    }) 

    output$dependent <- renderUI({ 
    df <- filedata() 
    if (is.null(df)) return(NULL) 
    items=names(df) 
    names(items)=items 
    selectInput("dependent","Select ONE variable as dependent variable from:",items) 
    }) 


    output$independents <- renderUI({ 
    df <- filedata() 
    if (is.null(df)) return(NULL) 
    items=names(df) 
    names(items)=items 
    selectInput("independents","Select ONE or MANY independent variables from:",items,multiple=TRUE) 
    }) 


    output$contents <- renderPrint({ 
    input$action 
    isolate({ 
     df <- filedata() 
     if (is.null(df)) return(NULL) 
     fmla <- as.formula(paste(input$dependent," ~ ",paste(input$independents,collapse="+"))) 
     summary(lm(fmla,data=df)) 
    }) 
    }) 

}) 

Ve burada: "Bira" bağımlı değişken ve "id" hariç değişkenlerin geri kalanı İşte server.R var bağımsız]

olan

# ui.R 
library(shiny) 

shinyUI(fluidPage(
    titlePanel("Multiple Linear Regression"), 
    sidebarLayout(
    sidebarPanel(
     fileInput('file1', 'Choose CSV File', 
       accept=c('text/csv', 
         'text/comma-separated-values,text/plain', 
         '.csv')), 

     tags$hr(), 
     uiOutput("dependent"), 
     uiOutput("independents"), 
     tags$hr(), 
     actionButton("action", "Press after reading file and selecting variables") 

    ), 
    mainPanel(
     verbatimTextOutput('contents') 
    ) 
) 
)) 

Sorum şu: "Dosya Okuduktan Sonra Basın ve değişkenleri seçerek" düğmesinin görünümünü başarılı bir yüklemeye bağlı olarak yapmak istiyorum.

Make conditionalPanel depend on files uploaded with fileInput

Ama sadece o iş yapamaz:

Burada yer alan öneri kullanmaya çalıştık.

Herhangi bir yardım isteğim var.

cevap

7

Bu kod server.R İşte

# server.R 
library(shiny) 

shinyServer(function(input, output) { 

    filedata <- reactive({ 
    infile <- input$file1 
    if (is.null(infile)){ 
     return(NULL)  
    } 
    read.csv(infile$datapath) 
    }) 

    output$dependent <- renderUI({ 
    df <- filedata() 
    if (is.null(df)) return(NULL) 
    items=names(df) 
    names(items)=items 
    selectInput("dependent","Select ONE variable as dependent variable from:",items) 
    }) 


    output$independents <- renderUI({ 
    df <- filedata() 
    if (is.null(df)) return(NULL) 
    items=names(df) 
    names(items)=items 
    selectInput("independents","Select ONE or MANY independent variables from:",items,multiple=TRUE) 
    }) 


    output$contents <- renderPrint({ 
    input$action 
    isolate({ 
     df <- filedata() 
     if (is.null(df)) return(NULL) 
     fmla <- as.formula(paste(input$dependent," ~ ",paste(input$independents,collapse="+"))) 
     summary(lm(fmla,data=df)) 
    }) 
    }) 


    output$ui.action <- renderUI({ 
    if (is.null(input$file1)) return() 
    actionButton("action", "Press after reading file and selecting variables") 
    }) 

}) 
+0

Teşekkür ederim Marat. Çözümü denedim. Düğmenin yok olmasını sağlıyor ... ve bu iyi. Ancak dosyayı yükledikten sonra görünmez. Ben server.R dosyası, dosya başarıyla yüklenen olup olmadığını kontrol eden bir satır içerir. – user23438

+0

@ user23438, 'conditionPanel' kullanarak çözümü elde edemedim, çünkü 'koşulu' nasıl ayarlayacağımı bilmiyordum. Şimdi uiOutput'a dayanan cevabı düzenledim. –

+0

Zaman ayırdığınız için teşekkürler Marat. Yeni çözümünüz beni çözüme daha yaklaştırıyor. Şimdi buton doğru anda beliriyor, ancak çıkışım $ içerikli bir problem yaratıyor. Bu bölümdeki kodu almadan önce, $ action eylemiyle etkinleştirilen "isolate ({})" içine sarılmış. Düğme bittiği için şimdi $ eylemi girildi. İzolattan kurtulabilirdim ama doğru değişkenler seçilene kadar çöp atıyor. – user23438

9

working ShinyApp ve ui.R ve server.R hem son hali dayanıyor

# ui.R 
library(shiny) 

shinyUI(fluidPage(
    titlePanel("Multiple Linear Regression"), 
    sidebarLayout(
    sidebarPanel(
     fileInput('file1', 'Choose CSV File', 
       accept=c('text/csv', 
         'text/comma-separated-values,text/plain', 
         '.csv')), 

     tags$hr(), 
     uiOutput("dependent"), 
     uiOutput("independents"), 
     tags$hr(), 
     uiOutput('ui.action') # instead of conditionalPanel 
    ), 
    mainPanel(
     verbatimTextOutput('contents') 
    ) 
) 
)) 

ui.R

bana

çalıştı Marat tarafından sağlanan tüm önerilere.

İlk yardımın Marat için ui.R

# ui.R 

library(shiny) 

shinyUI(fluidPage(
    titlePanel("Multiple Linear Regression with R/Shiny"), 
    sidebarLayout(
    sidebarPanel(
     p("Please upload a CSV formatted file with your data."), 
     fileInput('file1', label='Click button below to select the file in your computer.', 
       accept=c('text/csv', 
         'text/comma-separated-values,text/plain', 
         '.csv')), 

     tags$hr(), 
     uiOutput("dependent"), 
     uiOutput("independents"), 
     tags$hr(), 
     uiOutput('ui.action') # instead of conditionalPanel 
    ), 
    mainPanel(
     p("Here's the output from your regression:"), 
     verbatimTextOutput('contents') 
    ) 
) 
)) 

ve server.R

# server.R 

library(shiny) 

shinyServer(function(input, output) { 

    filedata <- reactive({ 
    infile <- input$file1 
    if (is.null(infile)){ 
     return(NULL)  
    } 
    read.csv(infile$datapath) 
    }) 

    output$ui.action <- renderUI({ 
    if (is.null(filedata())) return() 
    actionButton("action", "Run regression") 
    }) 

    output$dependent <- renderUI({ 
    df <- filedata() 
    if (is.null(df)) return(NULL) 
    items=names(df) 
    names(items)=items 
    selectInput("dependent","Now select ONE variable as dependent variable from:",items) 
    }) 


    output$independents <- renderUI({ 
    df <- filedata() 
    if (is.null(df)) return(NULL) 
    items=names(df) 
    names(items)=items 
    selectInput("independents","Also select ONE or MANY independent variables in the box below. You can change your selection several times:",items,multiple=TRUE) 
    }) 


    output$contents <- renderPrint({ 
    if (is.null(input$action)) return() 
    if (input$action==0) return() 
    isolate({ 
     df <- filedata() 
     if (is.null(df)) return(NULL) 
     fmla <- as.formula(paste(input$dependent," ~ ",paste(input$independents,collapse="+"))) 
     summary(lm(fmla,data=df)) 
    }) 
    }) 


}) 

Bir kez daha teşekkürler.

+0

Rica ederim! –

İlgili konular