Javascript 在Rshiny数据表包中使用JS根据单元格输入高亮显示行

Javascript 在Rshiny数据表包中使用JS根据单元格输入高亮显示行,javascript,r,shiny,dt,Javascript,R,Shiny,Dt,我一直在尝试在datatable的选项列表中使用rowCallback参数。它不会终止应用程序,但当按原样运行时,表不会加载到页面。ATS是数据表的列,ATS中每一行的“覆盖”值应与其他行的颜色不同。这是我第一次尝试在shiny中使用javaScript,所以我不确定为什么表没有显示。有什么不对的建议吗? 干杯 createdRow=I( “函数(行、数据){ if(parseFloat(data[5])我通常更喜欢使用内置函数,而不是创建自己的自定义JavaScript。在这种情况下,您可以使

我一直在尝试在datatable的选项列表中使用rowCallback参数。它不会终止应用程序,但当按原样运行时,表不会加载到页面。ATS是数据表的列,ATS中每一行的“覆盖”值应与其他行的颜色不同。这是我第一次尝试在shiny中使用javaScript,所以我不确定为什么表没有显示。有什么不对的建议吗? 干杯

createdRow=I(
“函数(行、数据){

if(parseFloat(data[5])我通常更喜欢使用内置函数,而不是创建自己的自定义JavaScript。在这种情况下,您可以使用。它非常适用于数字或基于特定字符串值的着色:

library(DT)
mtcars$cyl=as.character(mtcars$cyl)
 datatable(mtcars) %>% formatStyle('cyl',
  target = 'row',
  backgroundColor = styleEqual(c("6"), c('#00adff'))
)

您可以添加多个规则,如
styleEqual(c(“6”、“5”)、c(“#00adff”、“绿色”))
,但据我所知,它不包含带字符串的if-else结构的选项。它对numeric是这样做的,因此我们可以创建一个“helper”列来作为行颜色的基础,并使用columnDefs在结果中隐藏该列:

 mtcars$cyl = as.character(mtcars$cyl)
 mtcars$helper = mtcars$cyl=="6"
 datatable(mtcars,options=list(columnDefs = 
        list(list(visible=FALSE, targets=which(colnames(mtcars)=='helper'))))) %>% 
  formatStyle('helper', target = 'row',
  backgroundColor = styleEqual(c(1,0), c('#EDEDED','#00adff')))
希望这有帮助


我刚刚找到了解决方案,非常感谢!我现在遇到了一个类似的问题,styleEqual没有那么大帮助。我需要突出显示列单元格>=某个数字的行。我尝试了许多不同的java脚本示例,但都没有成功。有什么想法吗?您可以尝试StyleInterval:
backgroundColor=StyleInterval(6,C(‘,’Green’))< /COD>颜色的所有行的值大于6。如果有帮助的话,你能考虑接受这个答案吗?谢谢。最后一个,一系列的值。比如说1<Cyt<10?你也可以用StyleInterval做这个,我有一个很好的例子。(2.样式表单元格下的第二个)
 mtcars$cyl = as.character(mtcars$cyl)
 mtcars$helper = mtcars$cyl=="6"
 datatable(mtcars,options=list(columnDefs = 
        list(list(visible=FALSE, targets=which(colnames(mtcars)=='helper'))))) %>% 
  formatStyle('helper', target = 'row',
  backgroundColor = styleEqual(c(1,0), c('#EDEDED','#00adff')))