From f2fa8be6f9f8cf2205fc650c9dff7d0bd63a63ed Mon Sep 17 00:00:00 2001 From: TylerSagendorf Date: Sat, 18 Jul 2026 20:17:31 -0500 Subject: [PATCH 1/2] Improve speed of write_gmt --- R/io.R | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/R/io.R b/R/io.R index 917c62e..bc7ab20 100644 --- a/R/io.R +++ b/R/io.R @@ -797,12 +797,11 @@ write_gmt <- function(lst, fname) { message(paste(fname, "exists, deleting...")) file.remove(fname) } - for (i in seq_along(lst)) { - el <- lst[[i]] - ncolumns <- 2 + length(el$entry) - write(c(el$head, el$desc, el$entry), file=fname, sep="\t", - append=TRUE, ncolumns=ncolumns) - } + lst <- vapply(lst, function(el) { + paste(c(el$head, el$desc, el$entry), collapse = "\t") + }, character(1L)) + lst <- paste(lst, collapse = "\n") + write(lst, file=fname, sep="\t", append=FALSE) } #' Read an LXB file and return a matrix From 4d24d02150cb94a53e5dfe063738907282209dd0 Mon Sep 17 00:00:00 2001 From: TylerSagendorf Date: Mon, 20 Jul 2026 17:51:24 -0500 Subject: [PATCH 2/2] Reduce write_gmt memory usage --- R/io.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/R/io.R b/R/io.R index bc7ab20..11477da 100644 --- a/R/io.R +++ b/R/io.R @@ -795,13 +795,12 @@ write_gmt <- function(lst, fname) { # head, desc, entry if (file.exists(fname)) { message(paste(fname, "exists, deleting...")) - file.remove(fname) + # fname will be overwritten by cat() } lst <- vapply(lst, function(el) { paste(c(el$head, el$desc, el$entry), collapse = "\t") }, character(1L)) - lst <- paste(lst, collapse = "\n") - write(lst, file=fname, sep="\t", append=FALSE) + cat(lst, file=fname, sep="\n", append=FALSE) } #' Read an LXB file and return a matrix