Чтобы отсортировать четвертый столбец в соответствии со вторым столбцом:
library(DT)
render <- JS(
"function(data, type, row, meta){",
" if(type === 'sort' || type === 'type'){",
" return row[2];",
" } else {",
" return data;",
" }",
"}"
)
d = data.frame(
names = rownames(mtcars),
date = as.Date('2015-03-23') + 1:32,
time = as.POSIXct('2015-03-23 12:00:00', tz = 'UTC') + (1:32) * 5000,
otherColumn = mtcars$mpg,
stringsAsFactors = FALSE
)
datatable(d, filter = 'bottom',
options = list(
pageLength = 5,
columnDefs = list(
list(targets = 4, render = render)
)
)
)
Для цветов вы можете:
render <- JS(
"function(data, type, row, meta){",
" if(type === 'sort' || type === 'type'){",
" return row[2];",
" } else if(type === 'display'){",
" var date = '<span style=\"color:red;\">' + row[2] + ' </span>';",
" var time = '<span style=\"color:blue;\">' + row[3] + ' </span>';",
" var other = '<span style=\"color:green;\">' + data + '</span>';",
" return date + time + other;",
" } else {",
" return data;",
" }",
"}"
)
d = data.frame(
names = rownames(mtcars),
date = as.Date('2015-03-23') + 1:32,
time = as.POSIXct('2015-03-23 12:00:00', tz = 'UTC') + (1:32) * 5000,
otherColumn = stringi::stri_rand_strings(32, 3),
stringsAsFactors = FALSE
)
datatable(d, filter = 'bottom',
options = list(
pageLength = 5,
columnDefs = list(
list(targets = 4, render = render)
)
)
)