将yaml文件打印到R中的pdf

时间:2018-06-06 21:14:28

标签: r pdf yaml

是否有人知道如何将格式良好的yaml文件打印到R中的PDF?我使用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 :(得分:1)

这是我的解决方案(基本上只是在yaml文件中的值上调用toString):

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()
}