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 HalleAG 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
___
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel