首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中以特定格式将data.frame写入yaml文件?

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

Stack Overflow用户
提问于 2020-07-05 20:16:34
回答 2查看 247关注 0票数 2

假设我有一个data.frame:

代码语言:javascript
运行
复制
 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,如:

代码语言:javascript
运行
复制
-
  id: "p1"
  fastq: "/a/b/c/p1_fastq.gz"
-
  id: "p2"
  fastq: "/a/b/c/p2_fastq.gz"

我尝试过R中的yaml包,但是它写成

代码语言:javascript
运行
复制
files:
-/a/b/c/p1_fastq.gz
-/a/b/c/p2_fastq.gz
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-05 20:20:19

我们可以使用catsprintf粘贴元素并将其写入file

代码语言:javascript
运行
复制
cat(with(x, sprintf('-\nid: "%s"\nfastq: "%s"\n', ids, files)),
        "\n", file = "test.yaml")

-output

票数 1
EN

Stack Overflow用户

发布于 2020-07-05 20:33:14

@akrun对base的回答很好,另一种选择是使用yaml包为您做一些事情:

代码语言:javascript
运行
复制
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元素代表一行。

代码语言:javascript
运行
复制
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)。

用你的数据,

代码语言:javascript
运行
复制
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: p2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62745869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档