googleVis:多级排序功能gvisTable sortColumn?

时间:2013-11-05 14:57:19

标签: r shiny googlevis

有没有办法在googleVis中的gvisTable中进行多级排序? 我正在使用Shiny来显示这样的gvisTable:

x <- gvisTable(tabData,options=list(sortColumn=2,showRowNumber='TRUE',allowHtml='TRUE'),chartid=tabID)

我想知道是否有办法对值进行排序,比如,首先是第2列,然后是第3列。

如果gvisTable没有这个功能但是除了googleVis之外的另一个包中有另一种类型的表可以在Shiny中执行,那也没关系。 有什么想法吗?

3 个答案:

答案 0 :(得分:3)

install.packages('shiny', type = 'source')

ui.r:

library(shiny)
shinyUI(bootstrapPage(
  dataTableOutput('tbl')
))

server.r:

library(shiny)
shinyServer(function(input, output) {
  output$tbl <- renderDataTable({
    data.frame(x = 1:10, y = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5))
  })
})

从dataTables说明: http://datatables.net/examples/basic_init/multi_col_sort.html

“如果bSort初始化程序为true(默认情况下),则此多重排序机制始终处于活动状态,最终用户可以通过”shift“单击要添加到排序的列来激活它。”

因此,当您运行此应用程序时,尝试按“y”排序,然后按住Shift键并单击x(观察列标题中的紫色突出显示的箭头),以查看“y”列是否仍然排序,而“ x“列更改排序顺序,使y固定。

答案 1 :(得分:1)

您可以对数据源进行排序,对吗?

orderedData <- tabData[order(tabData[2], tabData[3]),]
x <- gvisTable(orderedData,options=list(showRowNumber='TRUE',allowHtml='TRUE'),chartid=tabID)

答案 2 :(得分:0)

您可以简单地按多列排序,例如:

sortColumn=c(0,1,2) ## sort by columns 1:3