2017-03-08 23 views
0

我正在构建一个闪亮的应用程序,它可以从用户获取输入值并动态显示数据框。当我不使用shinydashboard库时,我能够成功显示数据帧。但我有显示使用dataTableOutput在ui.R和server.RR Shiny:如何使用shinydashboard库在闪亮的应用程序中显示数据框

我也试过显示mtcars据帧,这是不是一个反应数据帧renderDataTable数据帧麻烦,但它也不会被显示。

这是我在我的server.R文件:

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

    observeEvent(input$click_counter, { 
    name<- input$name 
    gender<- input$gender 
    college<- input$college 
    team<- input$team 
    score<- as.numeric(input$score) 
    rank<- 0 

    new_row<- data.frame(rank,name,college,gender,team,score) 

    values$df<- rbind(values$df, new_row) 
    values$df<- values$df[order(values$df$score,decreasing=TRUE),] 
    values$df$rank<- 1:nrow(values$df) 

    }) 

    output$nText2<- renderDataTable({ 
    datatable(values$df) 
    }, options = list(orderClasses = TRUE,lengthMenu = c(5, 10, 30), pageLength = 5)) 

这是我在ui.R文件:

tabItem(tabName = "signup", 
     fluidRow(
     box(textInput("name", "이름"), 
     selectInput("college", "대학", 
        choices = list("간호대학", "경영대학", 
            "공과대학", "농업생명과학대학", 
            "미술대학", "법과대학", 
            "사범대학", "사회과학대학", 
            "수의과대학", "생활과학대학", 
            "약학대학", "음악대학", 
            "인문대학", "의과대학", 
            "자연과학대학", "기타"), 
        selected = 1), 
     selectInput("team", "교내 소속축구팀", 
        choices = list("싸커21", "아르마다", 
            "에코플러스", "아크로", 
            "P.O.S", "공대", 
            "자연대", "관악사", 
            "농대축구부 휘모리", "지오싸카스", 
            "새츠", "샥스", 
            "FC SEES", "Cells United", 
            "프리템포", "남풍", 
            "없음")), 
     textInput("score", "점수"), 
     actionButton("click_counter","Submit")), 
     box(DT::dataTableOutput("nText2")) 
) 
+0

尝试:'$输出nText2 < - renderDataTable(值为$ df,options = list(orderClasses = TRUE,lengthMenu = c(5,10,30),pageLength = 5))in in server.R and'box(dataTableOutput(“ntext2”))'in ui.R – ottlngr

+0

@ottlngr这正是我最初的想法,但它也无法工作... – Oleole

回答

1

我已经改变了一下你的代码它运作良好:

你忘了在你的代码来创建一个小部件id="gender"

2.reactiveValues(df=NULL)

数据表输出代码:

output$nText<- renderDataTable({ datatable(values$df, options = list(orderClasses = TRUE,lengthMenu = c(5, 10, 30), pageLength = 5))})

以下是完整的应用程序代码:

library(shiny) 
library(shinydashboard) 
library(DT) 


ui <- dashboardPage(
    dashboardHeader(), 
    dashboardSidebar(disable = TRUE), 
    dashboardBody(
    tabItem(tabName = "signup", 
      fluidRow(
       box(textInput("name", "이름"), 
        textInput("gender", "이름"), 
        selectInput("college", "대학", 
           choices = list("간호대학", "경영대학", 
              "공과대학", "농업생명과학대학", 
              "미술대학", "법과대학", 
              "사범대학", "사회과학대학", 
              "수의과대학", "생활과학대학", 
              "약학대학", "음악대학", 
              "인문대학", "의과대학", 
              "자연과학대학", "기타"), 
           selected = 1), 
        selectInput("team", "교내 소속축구팀", 
           choices = list("싸커21", "아르마다", 
              "에코플러스", "아크로", 
              "P.O.S", "공대", 
              "자연대", "관악사", 
              "농대축구부 휘모리", "지오싸카스", 
              "새츠", "샥스", 
              "FC SEES", "Cells United", 
              "프리템포", "남풍", 
              "없음")), 
        textInput("score", "점수"), 
        actionButton("click_counter","Submit")), 
       box(DT::dataTableOutput("nText")) 
      ) 
))) 

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

    values<- reactiveValues(df = NULL) 
    #values$df<- data.frame() 

    observeEvent(input$click_counter, { 
    name<- input$name 
    gender<- input$gender 
    college<- input$college 
    team<- input$team 
    score<- as.numeric(input$score) 
    rank<- 0 

    new_row<- data.frame(rank,name,college,gender,team,score) 

    values$df<- rbind(values$df, new_row) 
    values$df<- values$df[order(values$df$score,decreasing=TRUE),] 
    #print(values$df) 
    values$df$rank<- 1:nrow(values$df) 
    }) 

    output$nText<- renderDataTable({ 
    datatable(values$df, options = list(orderClasses = TRUE,lengthMenu = c(5, 10, 30), pageLength = 5))}) 
}) 

shinyApp(ui = ui, server = server) 
+0

非常感谢您的帮助:)请问您能解释**值< - reactiveValues(df = NULL)**吗? – Oleole

+0

您必须创建已有内容的反应值。解决方法是在反应值中放置一个空的数据框(在你的情况下称为'df')。 –

相关问题