]> git.donarmstrong.com Git - r/common_r_code.git/blob - array_to_excel.R
use \t as a sep; fix system() call
[r/common_r_code.git] / array_to_excel.R
1 ### this requires txt2xls, which you can find here:
2 ### http://git.donarmstrong.com/bin.git/b/txt2xls
3
4 mkdtemp <- function() {
5     max.tries <- 100
6     while (max.tries > 0) {
7         tmpnam <- tempfile("dir")
8         if (dir.create(tmpnam)) {
9             return(tmpnam)
10         }
11         max.tries <-  max.tries - 1
12     }
13     return(NA)
14 }
15
16 array_to_excel <- function(data,workbook) {
17     if (is.data.frame(data) || is.data.frame(data)) {
18         temp <- data
19         data <- list()
20         data[[workbook]] <-
21             temp
22     }
23     temp.dir <- mkdtemp()
24     worksheets <- NULL
25     for (worksheet in names(data)) {
26         write.table(data[[worksheet]],
27                     file=file.path(temp.dir,worksheet),
28                     sep="\t"
29                     )
30         worksheets <- c(worksheets,
31                         file.path(temp.dir,worksheet))
32     }
33     system(paste(collapse=" ",shQuote(c("txt2xls","--output",workbook,worksheets))))
34     unlink(worksheets)
35     unlink(temp.dir)
36     return(workbook)
37 }