谁来写 table 使用 Shiny 输入

Who to write a table using a Shiny input

您好,以下代码 returns 出现错误,应用程序崩溃。错误指的是“你试图做一些只能从反应式表达式或观察者内部完成的事情”。

library(shiny)

ui <- fluidPage(
  theme = "",
  titlePanel(""),
  sidebarPanel(textInput("freetext", "Write Something")),
  mainPanel(textOutput("testtext"))
)


server <- function(input, output) {

  output$testtext <- renderText(paste("I wrote: ", input$freetext))

  table <- data.frame(wrote = input$freetext)
  
  write.csv(table, "~/testtable.csv", row.names = FALSE)

}

shinyApp(ui, server)

我尝试将 input$freetext 添加到响应式元素中,但没有成功。

server <- function(input, output) {

  output$testtext <- renderText(paste("I wrote: ", input$freetext))

  outtext <- reactive({input$freetext})

  table <- data.frame(wrote = outtext())

  write.csv(table, "~/testtable.csv", row.names = FALSE)

}

如何将 input$freetext 的值添加到 data.frame?

答案:这有效

library(shiny)

ui <- fluidPage(
  theme = "",
  titlePanel(""),
  sidebarPanel(textInput("freetext", "Write Something")),
  mainPanel(textOutput("testtext"))
)


server <- function(input, output) {

  output$testtext <- renderText(paste("I wrote: ", input$freetext))

  observeEvent(input$freetext, {
    if(nchar(input$freetext) > 0) {
      t <-input$freetext
      table <- data.frame(wrote = t)

      write.csv(table, "/shiny-data/users/scotcan1/testApp/testtable.csv", row.names = FALSE)
      }
  })



}

shinyApp(ui, server)

我发现这个很管用。

library(shiny)

ui <- fluidPage(
  theme = "",
  titlePanel(""),
  sidebarPanel(textInput("freetext", "Write Something")),
  mainPanel(textOutput("testtext"))
)


server <- function(input, output) {

  output$testtext <- renderText(paste("I wrote: ", input$freetext))

  observeEvent(input$freetext, {
    if(nchar(input$freetext) > 0) {
      t <-input$freetext
      table <- data.frame(wrote = t)

      write.csv(table, "/shiny-data/users/scotcan1/testApp/testtable.csv", row.names = FALSE)
      }
  })



}

shinyApp(ui, server)