r Shiny renderdatatable转置数据帧问题

时间:2015-10-18 05:26:10

标签: r shiny-server shiny

当我在Shiny中使用renderdatatable函数来显示转置数据集时,该函数返回缺少表列名称的结果。

enter image description here

很想知道其他人为缓解这个问题所做的工作,我们非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这可能是因为转置数据集没有任何rownames(在转置操作后它将成为列名)。 如果确保为数据输入设置列名,那么数据表渲染对我来说就好了。

library(shiny)

# Some data
n      <- 10
dat           <- data.frame("a"=sample(LETTERS,n),"b"=runif(n),"c"=runif(n))
rownames(dat) <-paste("r_", sample(LETTERS,n),sep="")
colnames(dat) <-paste("c_", sample(LETTERS,3),sep="")

ui <- shinyUI(fluidPage(
  fluidRow(
    column(8,dataTableOutput("tbl")),
    column(2,actionButton("renderMatrix","Render matrix")),
    column(2,actionButton("renderMatrixT","Render t(matrix)"))
  )
))

server <- shinyServer(function(input, output) {
  observeEvent(input$renderMatrix,{
    output$tbl <- renderDataTable({dat})
  })
  observeEvent(input$renderMatrixT,{
    output$tbl <- renderDataTable({t(dat)})
  })
})
shinyApp(ui = ui, server = server)

示例设置行名和列名,因此数据表将始终具有“列名”列。