2013-03-10 10 views
20

Tôi đang tạo một ứng dụng yêu cầu người dùng một vài câu hỏi khảo sát cơ bản. Khi điều này được thực hiện, chúng được yêu cầu cung cấp đầu vào số qua thanh trượt, nhấn tiếp tục, sau đó tạo một ô, yêu cầu người dùng nhập lại, cập nhật cốt truyện, v.v. Dữ liệu đầu vào đầu tiên phải là y1 trên ô và thứ hai đầu vào phải là y2 trên cốt truyện, ect. Nhưng ngoài ra tôi muốn lưu dữ liệu mà người dùng nhập vào, để tôi có thể truy cập nó trong kịch bản R của mình trên toàn cầu, vì vậy nó có thể được gửi tới tôi bằng cách sử dụng sendmailR hoặc để nó có thể được tải xuống máy tính của tôi dưới dạng tệp văn bản . Nhưng tôi đang gặp khó khăn trong việc tìm ra cách để làm điều này. Đây là những gì tôi có cho đến nay.R sáng bóng: cách lưu dữ liệu đầu vào vào máy chủ hoặc truy cập biến đầu vào trên toàn cầu?

n=10 #number of times to ask the user for input which will be stored in harv[i] 
Time = seq(n) 
harv = rep(0,n) #initializing vector for storage of user input at time 1 through n 

############### define server logic 

shinyServer(function(input, output){ 

    # Compute the forumla text in a reactive expression since it is 
    # shared by the output$caption and output$mpgPlot expressions 
    for(i in Time){ 

    # generate a plot 
    output$yieldplot <- renderPlot({ 
    harv[i] = input$harvest 
    plot(Time, harv, type='p', ylim=c(0,1)) 
    }) 

}#for 

}) 

Dưới đây là file ui.R

########################################### 
##### User Interface ################### 
########################################### 

library(shiny) 

#Define UI for app 
shinyUI(pageWithSidebar(

    #title 
    headerPanel("Game"), 
    mainPanel( selectInput("workexp", "Have you ever been employed:", 
          list("No"="no", "Yes" = "yes")),  
       sliderInput("push", "Choose a number", 
          min = 0, max = 1, value = 0.5, step= 0.01), 
       submitButton("Enter"), 
       plotOutput("yieldplot")             
)#mainpanel 

))#shinyUI 

Ngoài ra tôi cho vòng lặp để cố gắng và tạo ra những âm mưu lặp đi lặp sẽ không làm việc, tôi giả sử tôi cần phải làm một cái gì đó phản ứng nhưng tôi cần phải tìm ra cách để phác họa các mục đã xác định trước của người dùng được lưu trữ trong harv. Tôi nhìn vào downloadHanlder nhưng điều này tải dữ liệu và lô trên máy tính của người dùng.

Trả lời

16

Câu trả lời là xác định biến bên ngoài hàm shinyServer. Sau đó, tạo một bài tập toàn cầu trong các hàm phản ứng bằng cách sử dụng <<- thay vì <- hoặc =. Sau đó, bạn có quyền truy cập vào nó bên ngoài các chức năng phản ứng. Tuy nhiên, Bạn chỉ có quyền truy cập vào nó trong khi ứng dụng đang chạy, nhưng đây không phải là vấn đề khi gửi email cho chính bạn đầu vào hoặc ghi đầu vào vào một tệp văn bản.