У меня есть функция, которая генерирует фреймы данных со следующей структурой:
df <- data.frame(selected.variable = paste(letters[1:5], '_'),
percentage = c(50, 20, 10, 10, 10))
из гораздо большего фрейма данных.
То есть в фреймах данных, с которыми я работаю, есть один столбецс метками для выбранной переменной и вторым столбцом, который дает процент случаев, в которых эта метка встречается.
Я хочу создать таблицы этих фреймов данных, используя пакет flextable https://github.com/davidgohel/flextable. Я могу сделатьэто напрямую с использованием кода, подобного следующему:
percent_format <- function(x){
sprintf("%.1f %%", x)
}
labels_format <- function(x) {
x <- gsub(pattern = '_', replacement = '', x = x)
return(x)
}
table <- regulartable(df)
table <- set_header_labels(table, selected.variable = 'New name', percentage = 'Percentage')
table <- set_formatter(table, selected.variable = labels_format,
percentage = percent_format)
Я хотел бы написать функцию, которая обновляет имя и формат выбранной переменной программно - что-то вроде этого:
make.flextable <- function(data, variable, variable.name) {
percent_format <- function(x){
sprintf("%.1f %%", x)
}
labels_format <- function(x) {
x <- gsub(pattern = '_', replacement = ' ', x = x)
return(x)
}
table <- regulartable(data)
table <- set_header_labels(table, variable = variable.name, percentage = 'Percentage')
table <- set_formatter(table, variable = labels_format,
percentage = percent_format)
return(table)
}
ОднакоЯ не могу понять, как передать имя выбранной переменной (например, «selected.variable» в примере выше) в flextable.Я пытался использовать функцию map2 в соответствии с этим вопросом:
Во вложенном фрейме данных передавайте информацию из одного столбца списка в функцию, примененную в другом
, но несмог заставить его работать.