如何在R中以特定格式将data.frame写入yaml文件?

如何在R中以特定格式将data.frame写入yaml文件?,r,R,假设我有一个data.frame: x<-data.frame(files=c("/a/b/c/p1_fastq.gz", "/a/b/c/p2_fastq.gz"), ids=c("p1", "p2")) x files ids 1 /a/b/c/p1_fastq.gz p1 2 /a/b/c/p2_fastq.gz p2 我在R中尝试了yaml包,但它的编写方式是 f

假设我有一个data.frame:

 x<-data.frame(files=c("/a/b/c/p1_fastq.gz", "/a/b/c/p2_fastq.gz"), ids=c("p1", "p2"))
 x
               files ids
1 /a/b/c/p1_fastq.gz  p1
2 /a/b/c/p2_fastq.gz  p2
我在R中尝试了
yaml
包,但它的编写方式是

files:
-/a/b/c/p1_fastq.gz
-/a/b/c/p2_fastq.gz

我们可以使用
cat
sprintf
来粘贴元素并将其写入
文件

cat(with(x, sprintf('-\nid: "%s"\nfastq: "%s"\n', ids, files)),
        "\n", file = "test.yaml")
-输出


@akrun的答案对于base R来说非常好。另一种选择是使用该软件包为您做一些事情:

库(yaml)

亚姆:那很优雅。感谢
测试中显示的json。yaml
图像可能不符合yaml,尽管我假设
yaml::read_yaml
提供了json结构的规范验证。@r2evans您指的是
-
的位置吗?我还认为输出与OP不匹配。您可能需要添加空格,当在
-
列表中,第1列中不应该有文本(尽管yaml dict确实以第1列中的文本开头)。如何删除从第二个“-”开始的前导空格?
cat(with(x, sprintf('-\nid: "%s"\nfastq: "%s"\n', ids, files)),
        "\n", file = "test.yaml")