R Markdown生成PDF时YAML文件扫描简单键报错求助
R Markdown YAML扫描错误解决办法
问题描述
我有一个以.csv为输入、需生成PDF文件的R Markdown文件,其YAML头如下:
--- title: author: output: pdf_document: latex_engine: pdflatex html_document: df_print: paged params: csv_input: NULL ---
运行该文件时出现以下错误:
Warning: Error in yaml::yaml.load: Scanner error: while scanning a simple key at line 3, column 1 could not find expected ':' at line 4, column 1
我已确认该YAML格式有效,甚至移除整个YAML头后仍出现类似错误,请问有解决办法吗?
解决步骤
- 修复YAML头语法:当前YAML中
title:和author:后无内容也未加空格,部分解析器对这种写法兼容性差。可以改为空字符串或保留空格,示例如下:
--- title: "" author: "" output: pdf_document: latex_engine: pdflatex html_document: df_print: paged params: csv_input: NULL ---
排查隐藏字符与编码:文件中可能存在不可见特殊字符(如全角空格)或非UTF-8编码,导致解析失败。用文本编辑器(如VS Code、Notepad++)开启「显示所有字符」功能检查,保存为UTF-8编码格式。
检查正文内容:移除YAML头仍报错,说明问题可能在正文。比如正文出现
---开头的段落、未转义的冒号或异常缩进,会让解析器误判为YAML结构,逐一排查调整。更新依赖包:yaml或rmarkdown旧版本可能存在解析bug,运行以下命令更新:
install.packages(c("yaml", "rmarkdown"))
- 新建文件测试:创建空白R Markdown文件,仅放入修复后的YAML头和简单测试代码(如
read.csv(params$csv_input)),运行验证。若正常,再逐步迁移原文件内容排查问题点。
内容的提问来源于stack exchange,提问作者Karthik Ashok
相关产品推荐
相关产品推荐

