2016-11-06 12 views
0

Я большой поклонник пакета DT в R. Я хочу реплицировать некоторые условно отформатированные таблицы Excel, которые у меня есть, но мне трудно получить доступ к элементам стилизации.Условное форматирование datatable DT R

В частности, я хотел бы иметь возможность создавать функцию, которая позволяет пользователю вызывать строку/столбец данных и применять к нему условные формы, аналогично тому, как это делается в excel. Это было бы намного более удобной возможностью для начинающих пользователей R, таких как я, а также просто ускорить процесс для всех остальных. В отличие от карты тепла, условное форматирование важно, когда строки/столбцы не все одного типа, поэтому вам нужно делать каждый по отдельности. Также приятно иметь возможность определить, какие маркеры параметров с высоким и низким значением.

Я вижу, вы можете создавать разрывы, как в примере наблюдения на this странице

# create 19 breaks and 20 rgb color values ranging from white to red 
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE) 
clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>% 
    {paste0("rgb(255,", ., ",", ., ")")} 
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs)) 

, но я не знаю, как применить к отдельным строкам, хотя кажется, что вы можете называть их по имени, как видел here через formatStyle() и цвет фона, но тогда у вас все еще нет затененного градиента, и вам нужно знать имя строки/столбца, которое слишком много.

Любая помощь в создании настраиваемой функции будет большой помочь сообществу ИМО, имеющему отношение к данным.

ответ

-1

Так backgroundColor аргумент взять в классе JS_EVAL, который только JavaScript, и для приведенного выше кода (с помощью точки останова, установленные в данном примере) значения приведены ниже

"value <= -1.5504 ? 'rgb(255,255,255)' : value <= -0.9689 ? 'rgb(255,244,244)' : value <= -0.7885 ? 'rgb(255,232,232)' : value <= -0.6168 ? 'rgb(255,221,221)' : value <= -0.28425 ? 'rgb(255,210,210)' : value <= -0.1183 ? 'rgb(255,198,198)' : value <= 0 ? 'rgb(255,187,187)' : value <= 0.0754000000000001 ? 'rgb(255,176,176)' : value <= 0.2935 ? 'rgb(255,164,164)' : value <= 0.443 ? 'rgb(255,153,153)' : value <= 0.46745 ? 'rgb(255,142,142)' : value <= 0.5344 ? 'rgb(255,131,131)' : value <= 0.5647 ? 'rgb(255,119,119)' : value <= 0.979 ? 'rgb(255,108,108)' : value <= 1 ? 'rgb(255,97,97)' : value <= 1 ? 'rgb(255,85,85)' : value <= 1.1765 ? 'rgb(255,74,74)' : value <= 1.3743 ? 'rgb(255,63,63)' : value <= 1.65975 ? 'rgb(255,51,51)' : 'rgb(255,40,40)'" 

Теперь, если кто-то может мне помочь понимая, как я могу изменить цветовой палитру (скажем, переход от красного к зеленому) Я думаю, что было бы трудно реализовать простую в использовании функцию, хотя я все еще не уверен, как можно ссылаться на столбец/строку рядом с ее (хотя есть аргумент valueColumns, который вы можете позвонить

1

вы можете попробуйте что-то вроде этого:

# create 19 breaks and 20 hex color values ranging from red to green using white around the median 
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE) 
colfunc <- colorRampPalette(c("red","white","green")) 
clrs <- colfunc(length(brks) + 1) 
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs))