假设我有一个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如何将其写入yaml文件test.yaml,如:
-
id: "p1"
fastq: "/a/b/c/p1_fastq.gz"
-
id: "p2"
fastq: "/a/b/c/p2_fastq.gz"我尝试过R中的yaml包,但是它写成
files:
-/a/b/c/p1_fastq.gz
-/a/b/c/p2_fastq.gz发布于 2020-07-05 20:20:19
我们可以使用cat和sprintf粘贴元素并将其写入file
cat(with(x, sprintf('-\nid: "%s"\nfastq: "%s"\n', ids, files)),
"\n", file = "test.yaml")-output

发布于 2020-07-05 20:33:14
@akrun对base的回答很好,另一种选择是使用yaml包为您做一些事情:
library(yaml)
yaml <- as.yaml(mtcars[1:3, 1:3])
cat(yaml, "\n")
# mpg:
# - 21.0
# - 21.0
# - 22.8
# cyl:
# - 6.0
# - 6.0
# - 4.0
# disp:
# - 160.0
# - 160.0
# - 108.0另一种方法是执行row - each (又名"not column each“),其中每个list元素代表一行。
yaml <- as.yaml(mtcars[1:3, 1:3], column.major = FALSE)
cat(yaml, "\n")
# - mpg: 21.0
# cyl: 6.0
# disp: 160.0
# - mpg: 21.0
# cyl: 6.0
# disp: 160.0
# - mpg: 22.8
# cyl: 4.0
# disp: 108.0尽管yaml::as.yaml建议使用第一个方法(默认情况下是column.major=TRUE)。
用你的数据,
cat(as.yaml(x), "\n")
# files:
# - /a/b/c/p1_fastq.gz
# - /a/b/c/p2_fastq.gz
# ids:
# - p1
# - p2
cat(as.yaml(x, column.major = FALSE), "\n")
# - files: /a/b/c/p1_fastq.gz
# ids: p1
# - files: /a/b/c/p2_fastq.gz
# ids: p2https://stackoverflow.com/questions/62745869
复制相似问题