如何使用制表符分隔符 sep = "\t" 在 R 中编写 .tsv 文件
Posted
技术标签:
【中文标题】如何使用制表符分隔符 sep = "\\t" 在 R 中编写 .tsv 文件【英文标题】: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 <- data.frame(A, B, C)
更短、更高效、更安全。
@user438383 是的,但第一个文件使用 write_csv 很好,所以我很困惑。
@GregorThomas 我明白了。谢谢
【参考方案1】:
您可以使用 readr
包中的函数 write_tsv()
(csv 用于逗号分隔,tsv 用于制表符分隔)
【讨论】:
你可以使用比应该更准确,但是是的,这就是我推荐的。我可能也会称其为整洁的解决方案,这就是我建议学生在搜索时寻找的内容,因为这就是我教的内容。以上是关于如何使用制表符分隔符 sep = "\t" 在 R 中编写 .tsv 文件的主要内容,如果未能解决你的问题,请参考以下文章