2015-10-18 65 views
0

当我在Shiny中使用renderdatatable函数来显示转置数据集时,该函数返回表列名称丢失的结果。r闪亮的renderdatatable转置数据帧问题

enter image description here

好奇,找出别人怎么做来缓解这个问题,任何的帮助深表感谢。

+1

你能发表一个小的可重复的例子吗?我发布了一个答案,但现在我意识到我可能误解了某些示例代码会有所帮助。由行名称工作的 –

回答

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) 

这些示例设置了行名和列名,所以数据表总是有一个“列名”列。

+0

显示为第二列而不是第一列。他们是在右边,而不是显示在左边...... :(沮丧呃 –

+0

你可以发表一个这样的例子?因为我不知道我可以重新创建这种行为 –

+0

我在做反应函数做错了。我修好了,它的工作正常,你让我的一天。 –