我有一些代碼可以創建一個帶有單選按鈕的DT表。在此基礎上,我需要為每一行添加特定的顏色。我一直在嘗試使用 formatStyle 為每一行添加不同的顏色,但我沒有掌握正確的語法。
這里是作業代碼:
library(shiny)
library(DT)
c1 = "這是評論1"。
c2 = "這是評論2"。
c3 = "這是評論3"。
c4 = "這是評論4"。
c5 = "這是評論5"。
comments1 = list(c1, c2,c3,c4,c5)
m1 = matrix()
as. character(1: 5), nrow = 5。 ncol = 1, byrow = FALSE,
dimnames = list(comments1, LETTERS[1] )
)
for (i in seq_len(ncol(m1)) {
m1[, i] = sprintf()
'<input type="radio" name="%s" value="%s"/>',
'AValue', m1[, i]
)
}
callback1 <- c()
"var LETTERS = ['AValue'];",
"for(var i=0; i < LETTERS.length; i){"/span>,
" var L = LETTERS[i]; ",
" $('input[name=' L ']').on('click', function(){"/span>,
" var name = $(this).attr('name');"/span>,
" var value = $('input[name=' name ']:checked').val();",
" Shiny.setInputValue(name, value);"/span>,
" }); ",
"}"
)
ui <- fluidPage()
title= 'Radio buttons in a table',
DT::dataTableOutput('foo1'),
verbatimTextOutput('sel1')/span>,
)
服務器 < - function(input, 輸出,會話) {
output$foo1 =DT::renderDataTable()
m1, escape = FALSE。 選擇 = 'none'。 server = FALSE,
options = list(dom = 't, 分頁 = FALSE。 訂購= FALSE),
callback = JS(callback1),
)
output$sel1 = renderPrint({)
input[["AValue"]]
})
}
shinyApp(ui, server)。
以下是我所嘗試的不同的呼叫變化的some。
#formatStyle需要在DT:datatable() 上呼叫。
#Test添加formatStyle。
output$foo1 <- DT::renderDataTable({
dat < - datatable(m1, escape = FALSE。 選擇 = 'none',
options = list(dom = 't'/span>。 分頁 = FALSE。 訂購= FALSE))
callback = JS(callback1) %> % formatStyle(0, target='row'。 backgroundColor = styleEqual( 3, 'red'))
})
或者
#Test adding formatStyle
output$foo1 <- DT::renderDataTable({)
DT:: datable(m1,escape = FALSE。 選擇 = 'none',
options = list(dom = 't'/span>。 分頁 = FALSE。 訂購= FALSE。 回呼 = JS(callback1))
%> % formatStyle(0, target='row'。 backgroundColor = styleEqual( 3, 'red')))
})
如果能得到任何幫助,我們將不勝感激。 謝謝!
uj5u.com熱心網友回復:
你需要將表格作為formatStyle的一個引數來傳遞。要做到這一點,在renderDataTable里面你可以使用datatable函式。
看來你為某行分配顏色的條件并不能匹配任何一行。你需要把可能在列中的東西。下面是一個例子,當第0列的內容等于"This is comment 3"時,整個行的背景是紅色的。
output$foo1 = DT。 :renderDataTable({)
DT::datable()
m1, escape = FALSE。 選擇 = 'none',
options = list(dom = 't'/span>。 分頁 = FALSE。 訂購= FALSE),
callback = JS(callback1)
) %> % formatStyle(0, target='row'。 backgroundColor = styleEqual('this is comment 3', 'red'))
}, server = FALSE
)
uj5u.com熱心網友回復:
也許你可以用row_numbers定義一個新的列,并為感興趣的行分配顏色。 你可以讓row_num列不可見。 試試這個
mycolors < - c('green',' pink'。 'red', 'yellow', '橙色')
output$foo1 = DT::renderDataTable({)
m2 <- as.data。 frame(m1) %>% dplyr:: mutate(row_num = 1。 n())
datatable( m2, escape = FALSE,
選擇 = 'none',
extensions = c("Select"/span>。 "Buttons"),
callback = JS(callback1), ### 需要雙擊來選擇輻射按鈕。
選項 = list(dom = 't, 分頁 = FALSE。 訂購 = FALSE,
columnDefs = list(list(visible=FALSE。 目標=2))
)
) %>% formatStyle(/span>2,
target='row',
backgroundColor = styleEqual(c(1: 5),mycolors))
}, server = FALSE,
#callback = JS(callback1) ###不識別輸入[["AValue"]]
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332225.html
標籤:
上一篇:R中的時間序列的Ewma回報率

