如何使用制表符分隔符 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 &lt;- data.frame(A, B, C)更短、更高效、更安全。 @user438383 是的,但第一个文件使用 write_csv 很好,所以我很困惑。 @GregorThomas 我明白了。谢谢 【参考方案1】:

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

【讨论】:

可以使用比应该更准确,但是是的,这就是我推荐的。我可能也会称其为整洁的解决方案,这就是我建议学生在搜索时寻找的内容,因为这就是我教的内容。

以上是关于如何使用制表符分隔符 sep = "\t" 在 R 中编写 .tsv 文件的主要内容,如果未能解决你的问题,请参考以下文章

python中的rrsplit()方法

Python rsplit() 方法

R语言_read.table()函数用法

20190325-R语言读取数据之read.table()

字符串的rsplit方法

rsplit()方法