如何在R中以特定格式将data.frame写入yaml文件?
假设我有一个data.frame:如何在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
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")