DT in Shiny:仅更改单行的颜色

海斯特·里昂

我有一个数据集:

ID Value
102 306
41  800
101 783
105 193
myID 334

我想将其绘制为一个数据表,其中只有带有“ myID”的行被涂成橙色,而表的其余部分则变成蓝色。看过辅助函数其他示例之后,看来我应该使用styleEqual。但是,我不知道其他行中的值是什么,它们也将动态更改。

我尝试使用

datatable(tableData) %>%
formatStyle(0, target= 'row',color = 'black', backgroundColor = tableColour, 
                lineHeight='70%', padding = '3px 3px', fontSize = '80%') %>%
    formatStyle('ID', target = 'row', 
    backgroundColor = styleEqual(c("myID"), c('orange')))

但是,这不起作用-整个表都是蓝色的,第二条formatStyle语句被忽略。如果删除第一个formatStyle,我的行将变为橙色,但会丢失所有其他格式。有没有一种方法可以使用styleEqual定义eg c("myID", "All other IDs"),或者有其他解决方法?

弗洛里安

我可以想到两种可能的解决方法:

  • 根据您的列是否相等,创建一个1或0的帮助器列myID,然后使用该列为表格设置样式并隐藏该列。
  • 为column中的所有唯一值创建一个列映射(ID默认为某种颜色),并仅将与之对应的值设置myID为orange。

下面给出了第二个选项的工作示例。希望这可以帮助!


在此处输入图片说明

df = read.table(text='ID Value
102 306
41  800
101 783
105 193
myID 334',header=T)

library(DT)

my_vals = unique(df$ID)
my_colors = ifelse(my_vals=='myID','orange','grey')

datatable(df) %>%
  formatStyle('ID', target = 'row', 
              backgroundColor = styleEqual(my_vals,my_colors))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章