22

我正在制作一个向用户询问一些基本调查问题的应用程序。完成后,他们被要求通过滑动条提供数字输入,按继续,然后生成一个绘图,再次要求用户输入,更新绘图等。第一个输入应该是绘图上的 y1,第二个输入输入应该是图上的 y2 等。但另外我想保存用户输入的数据,以便我可以在我的 R 脚本中全局访问它,以便可以使用 sendmailR 将它发送给我,或者它可以作为文本文件下载到我的计算机上. 但我无法弄清楚如何做到这一点。这是我到目前为止所拥有的。

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

})

这是 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  

此外,我的 for 循环尝试一遍又一遍地生成情节将不起作用,我假设我需要做一些反应性的事情,但我需要找出一种方法来绘制所有存储在 harv 中的过去用户定义的条目。我查看了 downloadHanlder 但这会在用户的计算机上下载数据和绘图。

4

1 回答 1

21

答案是在 shinyServer 函数之外定义一个变量。然后通过使用<<-代替<-或在反应函数中进行全局分配=。然后你可以在反应函数之外访问它。但是,您只能在应用程序运行时访问它,但这对于通过电子邮件发送输入或将输入写入文本文件不是问题。

于 2013-03-14T21:12:23.210 回答