[Bioc-devel] write.table() of DataFrame introduces \n linebreaks in CSV output

Neumann, Steffen @neum@nn @ending from ipb-h@lle@de
Wed Oct 24 22:22:28 CEST 2018


Hi,

we're seeing a problem with a S4Vectors::DataFrame
consisting of numbers and lists where write.table() 
introduces "\n" linebreaks that render the written CSV 
to be broken and unreadable.

The minimum example is:

  library(S4Vectors)
  l <- list(list(1), list(as.character(2:99)), list(3))
  m <- matrix(1:9, nrow=3, ncol=3)
  df <- cbind(DataFrame(m), DataFrame(do.call(rbind, l)))
  write.table(df)

This results in

  V1" "V2" "V3" "V1.1"
  "1" 1 4 7 1
  "2" 2 5 8 c("2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", 
=>"87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99")
  "3" 3 6 9 3

where the second row is line-wrapped after the "86",
and the next line starts with "87" and the rest of the second row. 
What we also observe is that as.character() of the offending cell 
indeed contains a "\n" at an unexpected place:

  > as.character(df[2,4])
  [1] "c(\"2\", [...], \"85\", \"86\", \n\"87\", \"88\", [...], \"99\")"

This happens for both R-devel 2018-10-17 and S4Vectors_0.19.22
as well as R-3.4.4 with S4Vectors_0.16.0
It affects us in https://github.com/workflow4metabolomics/xcms/issues/116#issuecomment-432684024

Any ideas ?

Yours, 
Steffen


-- 

IPB Halle                    AG Massenspektrometrie & Bioinformatik
Dr. Steffen Neumann          http://www.IPB-Halle.DE
Weinberg 3                   http://msbi.bic-gh.de
06120 Halle                  Tel. +49 (0) 345 5582 - 1470
                                  +49 (0) 345 5582 - 0
sneumann(at)IPB-Halle.DE     Fax. +49 (0) 345 5582 - 1409



More information about the Bioc-devel mailing list