问题描述
我正在将数据帧写入.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")