闪亮:数据框仅显示10行

时间:2017-01-04 12:58:54

标签: r shiny

我有一个闪亮的应用程序,可以显示绘图或打印数据帧。虽然它同时执行这两项操作,但它只打印数据框的前10行并添加“... 86多行”。我想显示至少40行数据帧。我试过了一个& head(a,n = 50)但它只显示总共10行。如何让它显示更多行。

这就是我所拥有的

server.R

output$IPLMatch2TeamsPlot <- renderPlot({ 
    printOrPlotIPLMatch2Teams(input, output)

})

# Analyze and display IPL Match table
output$IPLMatch2TeamsPrint <- renderPrint({ 
    a <- printOrPlotIPLMatch2Teams(input, output)
    head(a,n=50)
    #a
})
output$plotOrPrintIPLMatch2teams <-  renderUI({ 
    # Check if output is a dataframe. If so, print
    if(is.data.frame(scorecard <- printOrPlotIPLMatch2Teams(input, output))){
        verbatimTextOutput("IPLMatch2TeamsPrint")
    }
    else{ #Else plot
        plotOutput("IPLMatch2TeamsPlot")
    }

})

ui.R

   tabPanel("Head to head",
                        headerPanel('Head-to-head between 2 IPL teams'),
                        sidebarPanel(
                            selectInput('matches2TeamFunc', 'Select function', IPLMatches2TeamsFuncs),
                            selectInput('match2', 'Select matches', IPLMatches2Teams,selectize=FALSE, size=20),                                
                            uiOutput("selectTeam2"),
                            radioButtons("plotOrTable1", label = h4("Plot or table"),
                                         choices = c("Plot" = 1, "Table" = 2), 
                                         selected = 1,inline=T)


                        ),
                        mainPanel(
                            uiOutput("plotOrPrintIPLMatch2teams")

                        ) 

1 个答案:

答案 0 :(得分:3)

当您知道输出将是data.frame而不仅仅是任何随机文本时,您可以选择针对显示表格数据而优化的输出。您可以尝试renderTabletableOutput而不是renderPrintverbatimTextOutput。另一个选项是DT包中的renderDataTable。这将创建一个表,在额外的行上放置额外的行,以便您可以访问所有行,并且可以随时修改它将显示的行数。

例如,使用以下内容替换当前的renderPrint

output$IPLMatch2TeamsPrint  <- DT::renderDataTable({
  a <- printOrPlotIPLMatch2Teams(input, output)
  datatable(a,
            options = list(
              "pageLength" = 40)
  )
})

并将verbatimTextOutput("IPLMatch2TeamsPrint")替换为DT::dataTableOutput("IPLMatch2TeamsPrint")应该为您提供一个包含40行的表格,并选择将更多行视为表格中的不同页面。

您可能还希望将名称从打印更改为表格,以便清晰,因为您不仅仅是打印了。