R 如何在闪亮的应用程序中显示矩阵a,其单元格颜色取决于另一个矩阵B的单元格?

R 如何在闪亮的应用程序中显示矩阵a,其单元格颜色取决于另一个矩阵B的单元格?,r,shiny,dt,R,Shiny,Dt,我有一个矩阵M,有正值和负值。我有另一个矩阵X(dim(X)=dim(M))。我正在尝试使用DT软件包在Shining app中将X显示为表格。我想显示矩阵X,其颜色由M的值决定。这意味着:color1在M>0(X[M>0])的X单元格中,color2在M的X单元格中,你的要求是可能的,但不是很简单。我的方法包括使用隐藏列。我的“食谱”: cbind条件矩阵M和“值矩阵”X 使用数据表中的选项参数隐藏属于条件矩阵的列 在DT::formatStyle中,将隐藏列设置为valueColumns,将

我有一个矩阵M,有正值和负值。我有另一个矩阵X(dim(X)=dim(M))。我正在尝试使用DT软件包在Shining app中将X显示为表格。我想显示矩阵X,其颜色由M的值决定。这意味着:color1在M>0(X[M>0])的X单元格中,color2在M的X单元格中,你的要求是可能的,但不是很简单。我的方法包括使用隐藏列。我的“食谱”:

  • cbind
    条件矩阵M和“值矩阵”X
  • 使用
    数据表
    中的
    选项
    参数隐藏属于条件矩阵的列
  • DT::formatStyle
    中,将隐藏列设置为
    valueColumns
    ,将非隐藏列设置为
    columns

  • 库(DT)
    库(dplyr)#用于%>%
    印刷品(百万)
    格式样式(
    列=3:4,
    valueColumns=1:2,
    backgroundColor=styleInterval(c(-0.01,0),c(“红色”、“白色”、“绿色”))
    )
    
    请注意,我使用
    targets=0:1
    来隐藏列
    1:2
    ,因为此参数遵循javascript语法,其中索引以
    0
    开始,而不是
    1


    解决方案就在这里:啊!我没有注意到你创建了一个新问题。我将把你链接到的解决方案移到这个问题上。
             X_colors <- reactive({
    
                 DT::datatable(X()) %>% 
                   formatStyle(
                   columns = c(1:3),
                   valueColumns(¿How do reference to M matrix?),
                   backgroundColor = styleInterval(c(-1,0), c("lightgreen", 
                   "lightred", "lightblue")
                 ))
               })
              output$X_table_2 <- DT::renderDataTable(X_colors())
    
    library(DT)
    library(dplyr)   # for %>%
    
    print(M <- matrix(c(-3:2), 3))
    #      [,1] [,2]
    # [1,]   -3    0
    # [2,]   -2    1
    # [3,]   -1    2
    print(X <- matrix(letters[1:6], 3))
    #      [,1] [,2]
    # [1,] "a"  "d" 
    # [2,] "b"  "e" 
    # [3,] "c"  "f"
    
    cbind(M, X) %>% datatable(
      options = list(columnDefs = list(list(visible = FALSE, targets = 0:1)))
    ) %>%
      formatStyle(
        columns = 3:4,
        valueColumns = 1:2,
        backgroundColor = styleInterval(c(-.01, 0), c("red", "white", "green"))
      )