ユーザーが行を選択できるテーブル(DT::renderDataTable
を使用)を持つ光沢のあるアプリケーションを作成しています。しかし、ユーザーが望むものがまだテーブルにない場合は、新しい行を追加することもできます。私はユーザーが新しいデータを入力するための入力コントロールを使用していますが、入力ボタンを押すと入力値からテーブルに新しいデータ行を作成する必要があります。しかし、ボタンを押してもテーブルは更新されません。Shinyさん、DataTableをユーザー入力の新しい値で更新してください
最小限例:
library(shiny)
library(DT)
mydata = data.frame(id=letters[1:5], val=sample(10,5,T))
ui = fluidPage(dataTableOutput("table"),
textInput('NewID', 'Enter new ID'),
numericInput('NewVal', 'Enter new val', 1),
actionButton("goButton", "Update Table"))
server = function(input,output){
output$table = renderDataTable(mydata)
update = eventReactive(input$goButton, {
newrow = data.frame(id = input$NewID, val = input$NewVal)
mydata = rbind(mydata, newrow)
})
}
shinyApp(ui,server)
は明らかに、これは、このアプローチする間違った方法です。 renderDataTable
とmydata
をrenderUI
、observe
、reactive
に更新するコードの組み合わせを試してみましたが、正しい方法を見つけることができません。
これは私の最初の光沢のあるアプリなので、基本的なコンセプトがあるかもしれません。正しい方法は何ですか?
'力でエラーが発生しました(デフォルト):グローバルだけでなくデータセット変更する
<<-
を使用することを忘れないでください。あなたはこのエラーを取得する@HubertLなしdefault'を – HubertLで、「値が」不足している引数をとき、ペーストし、コードを実行しますか?それは私のために実行されます。 – dww
'numericInput()'の 'value'パラメータを提供する必要があります – HubertL