R 如何在闪亮的应用程序中显示矩阵a,其单元格颜色取决于另一个矩阵B的单元格?
我有一个矩阵M,有正值和负值。我有另一个矩阵X(dim(X)=dim(M))。我正在尝试使用DT软件包在Shining app中将X显示为表格。我想显示矩阵X,其颜色由M的值决定。这意味着:color1在M>0(X[M>0])的X单元格中,color2在M的X单元格中,你的要求是可能的,但不是很简单。我的方法包括使用隐藏列。我的“食谱”: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,将
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"))
)