我有一个带有正值和负值的矩阵 M 。我有另一个矩阵 X (dim(X)= dim(M))。我正在尝试使用DT包将 X 显示为闪亮应用中的表格。我想显示矩阵 X ,其中不同的颜色由 M 的值决定。这意味着:X的单元格中的 color1,其中M> 1。 0(X [M> 0]),X的单元格中的color2,其中M <0(X [M <0])和X的单元格中的color3,其中M == 0(X [M == 0])。
下一个代码显示我遇到的问题: X < - 矩阵(c(1:9),3) M < - 矩阵(c(-3:2),3)#矩阵更复杂并且在a中创建 反应环境。这只是一个例子
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())
谢谢!!
答案 0 :(得分:1)
您要求的是可能的,但不是非常简单。我的方法包括使用隐藏列。我的食谱&#34;:
cbind
&#34; conditions-matrix&#34; M 和&#34;值 - 矩阵&#34; X ,options
中的datatable
参数隐藏属于条件矩阵的列。valueColumns
columns
,将非隐藏列设置为DT::formatStyle
醇>
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"))
)
请注意,我使用targets = 0:1
来隐藏列1:2
,因为此参数遵循javascript语法,其中索引以0
而不是1
开头。