微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中的write.table在定界符中产生空格

如何解决R中的write.table在定界符中产生空格

我正在将数据帧写入.bed文件;数据框看起来不错,但是当我使用以下命令导出它时:

write.table(x = bed_file,file = 'merged_out.bed',row.names = F,col.names = F,quote = F,sep = '\t')

,然后在终端中查看merged.bed的头部,其中某些行用空格分隔,但大多数用制表符分隔。 。 。有什么想法吗?

chr1    3816670 3818113 181 4 
chr1    6452977 6454435 181 1 
chr1    8075042 8075406 181 5 
chr1    8389451 8389713 181 1 
chr1    11190170    11190527    181 1 
chr1    14454661    14454861    181 2 
chr1    16212079    16213143    181 2 

解决方法

我怀疑这些不是“空格”,而是实际上是制表符的空白。

要验证:

### the first row
readLines("merged_out.bed",n = 1)
# [1] "chr1\t3816670\t3818113\t181\t4"

### the first seemingly-wrong line
readLines("merged_out.bed",skip = 4,n = 1)
# [1] "chr1\t3816670\t3818113\t181\t4"

很明显,这两行中没有" "个字符。

如果要查看文件中任何地方是否有文字空间,此表达式将验证整个文件(假设字段中没有合法空间):

any(grepl(" ",readLines("merged_out.bed")))
# [1] FALSE

数据准备:

dat <- read.table(text = "
chr1    3816670 3818113 181 4 
chr1    6452977 6454435 181 1 
chr1    8075042 8075406 181 5 
chr1    8389451 8389713 181 1 
chr1    11190170    11190527    181 1 
chr1    14454661    14454861    181 2 
chr1    16212079    16213143    181 2 ")
write.table(dat,"merged_out.bed",row.names = FALSE,col.names = FALSE,quote = FALSE,sep = "\t")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。