0

我只是不让它运行。Colorize200dMA 是 -1、0 或 1。在 -1 的情况下,'200d MA' 应该是红色单元格,在 0 的情况下它不应该被着色,在 1 的情况下它应该是绿色的。但最终几乎没有任何东西被着色,或者只有红色(第一个值),但从来没有绿色。

    datatable(ResultDF,selection = 'single', options=list(dom='ft', pageLength=50)) %>%
    #datatable(ResultDF, options=list(dom='ft')) %>%
      formatStyle(
        '200d MA', 'Colorize200dMA'
        background = styleEqual(c(-1, 1), c('#e6b8b7', '#d8e4bc'))
      ) %>%
#       formatStyle(
#         '50v200d MA', "Colorize50v200dMA",
#         backgroundColor = styleInterval(0, c('#e6b8b7', '#d8e4bc'))
#       ) %>%
      formatDate(c(3,6,8), "toLocaleDateString")
    })
4

2 回答 2

1

我认为您必须提供 3 种颜色,即使其中一种是“白色”:http ://rstudio.github.io/DT/functions.html

于 2015-10-23T12:53:04.743 回答
1

您可以直接实现一些简单的 js/jquery 代码,这将为您提供更多选项来为整个表格着色。

例如,

datatable(ResultDF,selection = 'single', options=list(
dom='ft',
pageLength=50,
rowCallback = JS('function(row, data) {
        if (parseFloat(data[x]) == -1 )
          $("td:eq(x)", row).css("background-color", "red");
        else if (parseFloat(data[x]) == 0 )
          $("td:eq(x)", row).css("background-color", "white");
        else if (parseFloat(data[x]) == 1 )
          $("td:eq(x)", row).css("background-color", "green");
      }'
      )
))

其中 x 是您的列,从 js 中的 0 开始(例如 r 第 2 列对于 js 是 1 )。

您可以通过这种方式添加条件格式,例如第 2 列为第 3 列设置颜色。

于 2015-10-23T12:56:05.627 回答