R Shiny:显示值与排序值

时间:2017-08-09 06:37:21

标签: r shiny

我正在编写关于每个用户的数据使用情况的报告。我有一个包含四列的数据框:名字,姓氏,用户ID(字符)和用户的磁盘使用情况(以兆字节为单位。

我不想显示诸如15360或0.32之类的值,而是希望显示人类可读取的值,例如15.36 GB或320 kB,包括单位。这需要将列数据转换为字符并销毁排序。

是否可以提供两个值:一个显示在表中,另一个("规范")值用于排序?

1 个答案:

答案 0 :(得分:1)

是的,我假设您使用DT在Shiny中显示数据帧。您可以使用columnDefs将隐藏列用作源以对另一列进行排序。例如:

library(DT)
df=data.frame(name= LETTERS[1:10],sizebytes= runif(10,1,2000000000))
df$size = sapply(df$sizebytes, function(x) {utils:::format.object_size(x, "auto")})
df = df[order(df$sizebytes,decreasing=TRUE),]

# here, 2 and 3 are the column indices of 'size' and 'sizebytes' respectively.
columndefs = list(list(orderData=2, targets= 3),
                  list(targets= 2,visible= F,searchable= F))

datatable(df,options=list(columnDefs = columndefs))

enter image description here

如您所见,我们按列sizebytes排序,但只显示列size。每当用户根据size列对数据表进行排序时,sizebytes的数值就会用于对表进行实际排序。希望这有帮助!