Динамические процентные бары в строке с возможностью форматирования - PullRequest
0 голосов
/ 05 октября 2018

У меня есть data.frame с 13 строками и 18 столбцами.Цель состоит в том, чтобы создать percentage bar по строкам.

Из документации форматируемой таблицы процентная линейка может не поддерживаться прямо из коробки.

MRE:

Пустышка data.frame выглядит следующим образом:

frame <- data.frame(replicate(18,sample(0:1,13,rep=TRUE)))

#load library
library(formattable)

Следующая строка создает процентные бары для первой строки:

formattable(
            frame, list(area(1, 1:18) ~ color_bar("lightgray", function(col) col/sum(col))))

Следующее создает процентные бары для всех строк, но он жестко запрограммирован:

formattable(
  frame, list(area(1, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(2, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(3, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(4, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(5, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(6, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(7, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(8, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(9, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(10, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(11, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(12, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)),
                       area(13, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col)))
) #works per row, not scalable

Идея состоит в том, чтобы создать диаграмму выше, динамически (для n переменных строк)

Вещи, которые я пытался и не работал, включают:

formattable(
  frame, list(area(1:13, 1:ncol(frame)) ~ color_bar("lightgray", function(col) col/sum(col))))

Этот не работает, потому что он создает полную область, поэтому проценты основаны на полном кадре.

1 Ответ

0 голосов
/ 05 октября 2018

Это сделал это:

formattable(frame,
            lapply(as.list(1:nrow(frame)), function(row) {
              area(row, 1:ncol(frame)) ~ color_bar('lightgray', function(row) row/sum(row))
            }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...