オプションのrowCallbackを使用してdatatableを使用してテーブルに条件付き書式を追加したいとします。テーブルのサイズはShinyアプリで変更され、2番目の列から最後の列の値が1番目の列の値よりも大きいかどうかに基づいてバックグラウンドを適用したいと考えています。したがって、どの列をフォーマットするかを指定するときにforループを組み込みたいと思います。ループ内のjavascriptコード内のRableのdatatable関数のrowCallbackオプション
私はに条件付き書式を適用したいと考えている列をハードコーディングするときは、次はうまく動作します:
if (!require(devtools)) install.packages("devtools"); library(devtools)
if (!require(DT)) devtools::install_github("rstudio/DT"); library(DT)
trial <- matrix(c(3,4,1,2,1,2,4,2,5), ncol=3)
colnames(trial) <- c('value', 'min', 'max')
trial.table <- data.frame(trial)
DT::datatable(trial.table,options = list(rowCallback = JS('
function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
if (parseFloat(aData[2]) > aData[1])
$("td:eq(2)", nRow).css("background-color", "orange");
if (parseFloat(aData[2]) > aData[1])
$("td:eq(3)", nRow).css("background-color", "orange");
}')))
私はループでこれをしようとすると、しかし、ディスプレイに何も表示され:
DT::datatable(trial.table,options = list(rowCallback = JS('
function(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
for (i =2, i < 4, i++) {
if (parseFloat(aData[i]) > aData[1])
$("td:eq(i)", nRow).css("background-color", "orange");
}
}')))
RのJavascriptの中でforループを処理しますか?
スティーブ、私は(今それを修正)していますが、テーブルはまだどちらか、中括弧で表示されません。 –