我有一个数据集:

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

我想将其绘制为一个数据表,其中只有带有“myID”的行被涂成橙色,而表的其余部分则变成蓝色。看了helper functionsother examples之后,看来我应该使用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定义例如c("myID", "All other IDs"),还是有其他解决方法?

最佳答案

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

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

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

    r - DT in Shiny : Change only the colour of a single row-LMLPHP
    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))
    

    关于r - DT in Shiny : Change only the colour of a single row,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49176026/

    10-10 12:26