【问题标题】:How to use tab separator sep = "\t" in writing a .tsv file in R如何使用制表符分隔符 sep = "\t" 在 R 中编写 .tsv 文件
【发布时间】:2021-12-27 20:13:46
【问题描述】:

我想编写一个 .tsv 文件并使用制表符分隔符 sep = "\t",但它似乎不起作用。比如我有这个简单的数据

a<-c(5,1,0,3,2,0.6,1.6,7,9,0)
b<-c(11,0,1,18,11,11,0,13,20,10)
c<-c(10,20,0.7,0.8,0.3,0.4,0,0.9,1,1)

MAT<-cbind(a,b,c)
MAT<- as.data.frame(MAT)

然后我将这些数据写入 .tsv 文件中使用

write.csv(MAT, "test.tsv", row.names = FALSE, quote = FALSE, sep = "\t")

但是,当我尝试阅读 test.tsv 时使用

read.csv("test.tsv")

结果似乎还可以。但是当我使用命令进行更深入的检查时

more test.tsv

通过终端,它显示分隔符是“,”而不是制表符。请任何人解释它为什么会发生?以及如何使制表符分隔符 sep = "\t" 代替 "," 起作用?谢谢

【问题讨论】:

  • 它没有警告你attempt to set 'sep' ignored吗?你应该改用write.table()
  • CSV 代表逗号分隔值。如果您不想要逗号分隔符,请使用write.table
  • 附带说明,应避免使用as.data.frame(cbind(...)) - 当您有混合数据类型时,它可能会导致问题,因为cbind 创建了一个矩阵。直接使用MAT &lt;- data.frame(A, B, C)更短、更高效、更安全。
  • @user438383 是的,但第一个文件使用 write_csv 很好,所以我很困惑。
  • @GregorThomas 我明白了。谢谢

标签: r csv write


【解决方案1】:

您可以使用 readr 包中的函数 write_tsv()(csv 用于逗号分隔,tsv 用于制表符分隔)

【讨论】:

  • 可以使用比应该更准确,但是是的,这就是我推荐的。我可能也会称其为整洁的解决方案,这就是我建议学生在搜索时寻找的内容,因为这就是我教的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
相关资源
最近更新 更多