簡體   English   中英

如何在 R -shiny 應用服務器中向 dataframe 添加新數據

[英]How to add new data to dataframe in R -shiny app server

在我的 Shiny 應用程序中,我想將輸入字段的內容保存為帶有操作按鈕的 dataframe 中的新行。 我在服務器 function 之外創建了一個空的 dataframe 並想通過 rbind 添加內容。 這在 R 中也很好用,但在 Shiny 中顯然不行。我的誤解是什么? 這是一個帶有一個字段的簡化示例

library(shiny)

#create an empty dataframe
df <- data.frame(name = character(), stringsAsFactors = FALSE)

ui <- fluidPage(
  textInput("name", "Enter Name"),
  actionButton("add", "Add Data to table"),
  tableOutput ("result")
)


server <- function(input, output) {
  
  data <- reactive (data.frame(name = input$name))
    #add data to df
  observeEvent(input$add, {
    df <- rbind(df,data())
  })
    output$result <- renderTable(df)
  
}

shinyApp(ui, server)

您可以使用reactiveVal來更新數據。 這對於每個 session 都是唯一的,如果你想從 append 到 dataframe 全局使用<<-

library(shiny)

#create an empty dataframe
df <- data.frame(name = character(), stringsAsFactors = FALSE)

ui <- fluidPage(
  textInput("name", "Enter Name"),
  actionButton("add", "Add Data to table"),
  tableOutput ("result")
)

server <- function(input, output) {
  
  df_server <- reactiveVal(df)
  
  data <- reactive({
    req(input$name)
    data.frame(name = input$name)
  })
  
  #add data to df

  observeEvent(input$add, {
    temp_df <- rbind(df_server(),data())
    df_server(temp_df)
  })
  output$result <- renderTable(df_server())
  
}

shinyApp(ui, server)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM