rmarkdown::yaml_front_matter()将参数名y/Y/yes/Yes转为TRUE的问题咨询
问题原因与解决方案:YAML头参数名
y被转为TRUE 这不是bug,而是YAML解析的标准特性导致的:
- YAML规范中,
y/Y/yes/Yes是布尔值true的合法别名,解析器会自动将这些标识符转换为布尔值;同理n/N/no/No会被转为false。 T/t/f不属于YAML标准的布尔别名,因此不会被自动转换。
解决方案
要保留这些字符串作为参数名,只需将参数名用单引号或双引号包裹,强制解析为字符串类型:
--- params: x: NA 'y': NA f: NA ---
修改后再用rmarkdown::yaml_front_matter()读取,y会被保留为字符串键,不会被转换为TRUE。
补充说明
rmarkdown::yaml_front_matter()底层依赖yaml包的解析逻辑,默认启用了YAML的自动类型转换,且该函数未暴露参数用于关闭此行为,因此通过引号包裹键名是最直接的解决方式。
内容的提问来源于stack exchange,提问作者Limey
相关产品推荐
相关产品推荐

