R Markdown使用动态字符串扩展:错误无法启动png()设备偶尔显示没有明确原因

时间:2017-09-15 16:44:02

标签: r markdown

我的虚拟降价脚本中有这段代码。

<!--- add tests from dynamic strings --> 
`r paste(knit(text = expand_string), collapse = '\n')`

该字符串在主脚本中生成:

generate_expand_string <- function(reported_test)
{

     exp_str <- paste0(
          '<h2>',
          reported_test,
          '</h2>',
          '\n',
          '<br>',
          '\n```{r ',
          paste0(reported_test, '_charts'),
          ', echo = F, fig.width = 14, fig.height = 12, fig.align = "center", message = F, warning = F}\n\n',
          'current_test <- ',
          '"',
          reported_test,
          '"',
          '\n\n',
          'if(length(indicator_charts[[current_test]]) > 0) { for(i in 1:length(indicator_charts[[current_test]])) { print(indicator_charts[[current_test]][[i]]) } };',
          '\n\n```',
          '\n',
          '<br>',
          '\n```{r ',
          paste0(reported_test, '_table'),
          ', results = "asis", echo = F}\n\n',
          'current_test <- ',
          '"',
          reported_test,
          '"',
          '\n\n',
          'kable(indicator_tables[[current_test]], align = rep("l", times = ncol(indicator_tables[[current_test]])));',
          '\n\n```',
          '\n\n'
     )

     return(exp_str)

}

我在主脚本中运行markdown:

rmarkdown::render(
               paste0(
                    getwd(),
                    '/',
                    'dfsdsvcg/',
                    dfsfdsfdf
               ),
               output_file = paste0(
                    gsub(' ', '_', reported_indicator),
                    entity_indicator_report_file_name
               ),
               output_dir = out_dir
          )

我实际检查了存在暂时存储png图像的文件夹:

<img src="S:\dfdfdf\dffdfd\debug\detailed\entities\September_2017\15_September_2017\thtthththef-addons\bwagfewcdvfe_files/figure-html/njebgkrded_charts-1.png" width="1344" style="display: block; margin: auto;" />

看起来像这样。有图像。当我在循环中生成页面时,此错误发生1/500次。

问题:您认为会导致什么?

当发生这种情况时我猜测:图像的路径长度变为200多个字符。我可以尝试缩短它。

1 个答案:

答案 0 :(得分:1)

回答(显然是修复bug的原因对我有用):如果从列出的ggplot对象导出的图像的路径长度为png文件并暂时存储在报告目录中,则会大于n个元素(大约200个)Markdown中的报告生成失败。请注意输出文件名的长度。