22

私は、ユーザーにいくつかの基本的な調査の質問をするアプリケーションを作成しています。これが行われると、スライドバーを介して数値入力を提供し、続行を押してからプロットを生成し、ユーザーに再度入力を求め、プロットを更新するように求められます。最初の入力はプロットのy1で、2番目の入力はプロットの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 に答える