R неполный вывод write.table - PullRequest
       28

R неполный вывод write.table

0 голосов
/ 11 апреля 2020

Я пишу df в выходной файл, но он не завершен, и я действительно не понимаю, почему

rgb_file <- file("/path/to/output/rgb_file.txt", 'w')
# df=df[-c(360576),] # Remove this line doesn't solve the problem
writeLines(header_rgb, rgb_file.txt, sep = '') # print str line as first line in my output
write.table(df, rgb_file, quote = FALSE, row.names = FALSE,col.names = FALSE,sep = "\t")


length(df[,1])
[1] 360637

Сейчас в терминале почти 100 строк не здесь, а последняя строка не завершена

wc -l rgb_file.txt 
  360575 rgb_file.txt

sed '360576q;d' rgb_file.txt 
chr15   93842904    93842954    region_9994 1   +   93842904    93842 # incomplete row

Так что длина моего фрейма данных и длина файла разные, и я не понимаю, почему. Я напечатал строки в конце моего выходного файла; ничто не выглядит иначе:

         chr start_subregion end_subregion   region_id subregion_id strand start_sub  end_sub    rgb
360574 chr15        93842854      93842904 region_9994            1      +  93842854 93842904    0,12,0
360575 chr15        93842904      93842954 region_9994            1      +  93842904 93842954    0,12,0
360576 chr15        93842954      93843004 region_9994            1      +  93842954 93843004    0,12,0
360577 chr15        93843004      93843054 region_9994            1      +  93843004 93843054    30,0,0
360578 chr15        93843054      93843104 region_9994            1      +  93843054 93843104    30,0,0

Я пытался дольше, df, и он работает ... Я пытался удалить эту строку, но затем это следующая строка, которая не завершена

Но что это больше всего странно, что если я напишу 2 раза в выводе, w c -l вернет длину моего фрейма данных * 2, и тогда строка будет завершена, посмотрите:

rgb_file <- file("/path/to/output/rgb_file.txt", 'w')
# df=df[-c(360576),] # Remove this line doesn't solve the problem
writeLines(header_rgb, rgb_file.txt, sep = '') # print str line as first line in my output
write.table(df, rgb_file, quote = FALSE, row.names = FALSE,col.names = FALSE,sep = "\t")
write.table(df, rgb_file, quote = FALSE, row.names = FALSE,col.names = FALSE,sep = "\t")

Terminal:

 wc -l rgb_file.txt 
  721214 rgb_file.txt
sed '360576q;d' rgb_file.txt 
chr15   93842904    93842954    region_9994 1   +   93842904    93842954    0,12,0 # Why now the line is complete and wc -l = 2*df

Может быть, что-то не так в том, как я пишу свой вывод? Потому что я сначала пишу строку str, а затем фрейм данных, но все должно быть в порядке

...