Распечатать файл yaml в pdf в R - PullRequest
0 голосов
/ 07 июня 2018

Кто-нибудь знает способ печати красиво отформатированного файла yaml в PDF в R?Я использую пакет yaml для загрузки файла yaml, и мне было интересно, как лучше всего превратить ключи и значения в красиво отформатированную таблицу для печати в PDF.

Вотто, что у меня есть, но он производит один столбец, записи которого имеют векторы значений NA:

print_inputs = function(inputs_yaml) {
  pdf(file='inputs_page.pdf', onefile=TRUE)
  mytheme = ttheme_default(
    core=list(fg_params=list(hjust=0, x=0.05)),
    rowhead=list(fg_params=list(hjust=0, x=0)),
    base_size = 5,
    base_colour = "black",
    base_family = "",
    parse = FALSE,
    padding = unit(c(4, 4), "mm"))

  mat = create_empty_table(0,2)
  for (name in names(inputs_yaml)) {
    value = unlist(inputs_yaml[[name]])
    mat = rbind(mat, c(name, value))
  }

  mat = array_split(mat, 25)
  for (m in mat) { grid.table(mat, theme=mytheme); grid.newpage(); }
  dev.off()
}

create_empty_table <- function(num_rows, num_cols) {
  frame <- data.frame(matrix(NA, nrow = num_rows, ncol = num_cols))
  return(frame)
}
array_split <- function(data, number_of_chunks) {
  rowIdx <- seq_len(nrow(data))    
  lapply(split(rowIdx, cut(rowIdx, pretty(rowIdx, number_of_chunks))), function(x) data[x, ])
}

yaml_file = yaml.load_file('~/Downloads/inputs__towrite.yaml')
print_inputs(yaml_file)

1 Ответ

0 голосов
/ 01 июля 2018

Вот мое решение (в основном, просто вызывая toString для значений в файле yaml):

print_inputs <- function(inputs_yaml) {
  pdf(file='inputs_page.pdf', onefile=TRUE, height=15)

  inputs_theme = ttheme_default(
    core=list(fg_params=list(hjust=0, x=0.05)),
    rowhead=list(fg_params=list(hjust=0, x=0)),
    base_size = 5,
    base_colour = "black",
    base_family = "",
    parse = FALSE,
    padding = unit(c(4, 2), "mm"))

  mat = matrix(ncol=2)
  for (name in names(inputs_yaml)) {
    value = unlist(inputs_yaml[[name]])
    value = gsub(',', '\n', toString(value))
    value = gsub('File\n', '', value)
    mat = rbind(mat, c(toString(name), value))
  }
  grid.table(mat, theme=inputs_theme)
  dev.off()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...