Я пытаюсь выполнить две различные операции форматирования на объекте с данными, используя пакеты DT и magrittr. Один использует вспомогательную функцию formatRound(), а другой передается как JavaScript в параметр rowCallback в функции datatable.R datatable rowCallback с DT
Когда я запускаю любую из операций форматирования отдельно, datatable отображает с ожидаемым форматированием. Однако, когда я оба вместе, datatable делает пустой, но я не получаю ошибку.
Этот код показывает поведение, которое я описываю.
library(magrittr)
library(DT)
df = data.frame(matrix(rnorm(20), nrow=10))
datatable(
data = df
) %>%
formatRound(c("X1", "X2"), 1)
#table renders as expected
datatable(
data = df,
options = list(
rowCallback = JS("
function(row, data, index) {
if (index > 2) {
$(row).css('background-color', '#EDEDED');
}
else if (index > 0) {
$(row).css('background-color', '#DEDEDE');
}
else {
$(row).css('background-color', '#D3D3D3');
}
}"
)
)
)
#table renders as expected
datatable(
data = df,
options = list(
rowCallback = JS("
function(row, data, index) {
if (index > 2) {
$(row).css('background-color', '#EDEDED');
}
else if (index > 0) {
$(row).css('background-color', '#DEDEDE');
}
else {
$(row).css('background-color', '#D3D3D3');
}
}"
)
)
) %>%
formatRound(c("X1", "X2"), 1)
#table renders as blank but with no error returned
ОК, я понимаю сейчас. Спасибо! – dmca
Если ответ вам поможет, пожалуйста, примите его, чтобы он помог другим людям в будущем! – Shiva
Привет, вместо index> 2, если я хочу написать index = (индекс последней строки) в условии if, каково было бы записать это в случае таблицы переменной длины? –