如何在R语言yaml包生成的YAML内容中添加值间换行?
在R的yaml包中添加自定义换行
方法1:直接修改生成的YAML文本字符串
as.yaml()输出的是字符串,直接通过字符串操作插入换行是最直接的解决方式:
library(yaml) your_yaml <- list(test = list(TRUE, FALSE), test2 = list(A = TRUE)) yaml_text <- as.yaml(your_yaml) # 定位目标位置并插入换行 yaml_text_modified <- gsub("- no\n test2:", "- no\n\n test2:", yaml_text) cat(yaml_text_modified)
输出结果:
test: - yes - no test2: A: yes
方法2:分块生成后拼接
如果YAML结构复杂,可以拆分内容分块生成,再用换行符拼接:
library(yaml) # 拆分YAML内容为独立块 block1 <- as.yaml(list(test = list(TRUE, FALSE))) block2 <- as.yaml(list(test2 = list(A = TRUE))) # 用两个换行符拼接不同块 yaml_text_modified <- paste(block1, block2, sep = "\n\n") cat(yaml_text_modified)
该方法适合YAML内容拆分后更易维护的场景,同样能得到预期输出。
为什么直接在列表加"\n"无效?
YAML是结构化数据格式,yaml包会把列表中的"\n"识别为键为空的字符串值,因此会输出'': |2+这类不符合预期的结构,这种方式违背了YAML的规范,无法实现自定义换行。
内容的提问来源于stack exchange,提问作者Quinten
相关产品推荐
相关产品推荐

