错误:无法将类“c(”shiny.render.function“,”function“)”强制转换为data.frame

时间:2017-02-20 05:57:47

标签: r dataframe shiny

我正在构建一个闪亮的网络应用程序,它从用户那里获取输入值,例如名称和性别。我想将这些值转换为数据帧,但我得到一个“错误:无法强制类”c(“shiny.render.function”,“function”)“to data.frame”错误。

以下是我在server.R文件中的内容:

    nText<- eventReactive(input$click_counter, valueExpr = {
    a<- renderText(input$name)
    b<- renderText(input$gender)
    c<- renderText(input$college)
    d<- renderText(input$team)
    e<- renderText(input$score)

    return(data.frame(player=a,college=b,gender=c,team=d,score=e))
  })

  output$nText<- renderDataTable({
    nText()
  })

这就是我在ui.R文件中的内容:

actionButton("click_counter","Submit"),
dataTableOutput("nText")

1 个答案:

答案 0 :(得分:1)

正如@Yang所说,您需要从输入中删除'renderText'。如果您想在每次点击“click_counter”时存储输入,您可以使用“reactiveValues”。我在下面列出了两个选项的工作示例,具体取决于您在输入后要对数据执行的操作:

ui <- fluidPage(title = "",

                sidebarLayout(

                  sidebarPanel(width = 6,
                               textInput("name", "Name"),
                               textInput("gender", "Gender"),
                               actionButton("click_counter","Submit")
                  ),
                  mainPanel(
                    dataTableOutput("nText"),
                    dataTableOutput("nText2")

                ))

)

server <- function(input, output, session) {

  values <- reactiveValues()
  values$df <- data.frame()

  mdf <- eventReactive(input$click_counter,{    
    name <- input$name
    gender <- input$gender

    da <- data.frame(name, gender)
    return(da)
  })

  observeEvent(input$click_counter, {
    name <- input$name
    gender <- input$gender

    da <- data.frame(name, gender)

    values$df <- rbind(values$df, da)
  })

  output$nText<- renderDataTable({
    mdf()
  })  

  output$nText2<- renderDataTable({
    values$df
  })
}

shinyApp(ui = ui, server = server)