我正在构建一个闪亮的网络应用程序,它从用户那里获取输入值,例如名称和性别。我想将这些值转换为数据帧,但我得到一个“错误:无法强制类”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")
答案 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)