On 5/20/2012 5:37 PM, Gabor Grothendieck wrote:

<snip>
Unfortunately this is getting increasingly complex due to the
non-standard evaluation done by dataframes2xls but if you want to do
it then this will do it.  We copy dataframes2xls to the current
environment and reset write.xls's environment so that it finds the
arguments.


run<- function(x1, x2, file){

    df.names<- paste0(deparse(substitute(x1)), ":::", deparse(substitute(x2)))

    # copy dataframe2xls namespace contents here&  reset environment of 
write.xls
    here<- environment()
    ns<- asNamespace("dataframes2xls")
    for(nm in ls(ns)) here[[nm]]<- ns[[nm]]
    environment(write.xls)<- here

    x23<- quote(c(x1, x2))
    do.call("write.xls", list(x23, file, sh.names = df.names))
}

library(dataframes2xls)

df1<- data.frame(c1=1:2, c2=3:4, c3=5:6)
df2<- data.frame(c21=c(10.10101010101,20, 3), c22=c(50E50,60, 3) )
outFile<- 'df12.xls'

run(df1, df2, outFile)

Thanks very much. I got this to work. However, I discovered three other problems with write.xls:


(1) With "\n" in a character string in the data.frame, it fails to write a file, noting, "Infile name is not a valid csv file" without throwing an error.


(2) With "," in a character string in the data.frame, it splits that element over multiple columns, thereby corrupting what is written.


(3) It insists on quoting all all character strings. I don't need or want those extraneous quotes, but I don't know how to get rid of them.


I've modified the code to gsub('\n|,', ' ', strings); this provides an acceptable fix to the first two problems. I plan to ignore the third if I can't fix it.


      Thanks again,
      Spencer

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to