【问题标题】:How to change the font color of a DT table based on another matrix in R如何根据R中的另一个矩阵更改DT表的字体颜色
【发布时间】:2017-12-14 19:03:16
【问题描述】:

我有两个矩阵:第一个有我要显示的数据,另一个有将用于选择字体颜色的值。问题是我不知道如何使用 R 中的 DT 包根据第二个矩阵更改颜色,我已经针对主矩阵中的列完成了此操作,但不知道该怎么做关于另一个矩阵。

这就是我所拥有的:

data = matrix(rnorm(100),10,10)
colnames(data) = as.character(seq(as.Date(Sys.Date()),as.Date(Sys.Date()+10), length.out = 10))
data_2 = matrix(runif(100),10,10)
colnames(data_2) = as.character(1:10)
data_final = cbind(data,data_2)

datatable(data_final,
          options = list(paging = FALSE, dom = 'tip',columnDefs = list(list(visible=F,
          targets =  c(10:20)))))%>%
  formatPercentage(colnames(data_final),2)

我认为应该是这样的:

  formatStyle(1:4, valueColumns=5:8,
              color = JS("value < 0 ? 'red' : value > 0 ? 'green' : 'blue'"))

其中 1:4 是我要更改颜色的列,5:8 是要比较的值,但在color = JS 中,它应该以某种方式进行更改,以便将第 1 列与第 5 列进行比较,等等来决定颜色。

【问题讨论】:

    标签: r datatable


    【解决方案1】:

    你可以像这样使用styleInterval

    formatStyle(columns = 1:10, valueColumns = 11:20, color = styleInterval(c(-1e-10, 1e-10), c('red', 'blue', 'green')))
    

    这里我们在-1e-10+1e-10 使用两个休息点。介于两者之间的所有东西,所以基本上是零,都是蓝色的。

    【讨论】:

    • 对我不起作用,因为第二个矩阵中的每个值都是我必须用来比较的值。间隔将与矩阵data 中的所有元素相同,正如我所说的,每个元素都有一个值来比较 data_2
    • 所以您在data_final 中基本上没有5:8 列?告诉我应该对我添加的图像进行哪些更改。
    • @Martin Schmelzer 是的,data_final 是一个有 20 列的矩阵,前 10 列将被显示,其他 10 列将被使用,或者我想使用它们,作为它必须比较以更改前 10 列的颜色的值。因此,前 10 列的每个元素都应与其后 10 列中的相应元素进行比较
    • 所以nrow 对于两个矩阵来说是相同的。为什么cbind btoh 矩阵和隐藏第二个矩阵列的组合不起作用?
    • 是的,矩阵和cbind 对我有用。为什么要隐藏第二个?因为我不想显示这些数据,我只想用它来改变我无法做到的颜色
    猜你喜欢
    • 2015-07-23
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    相关资源
    最近更新 更多