[R] write.xls

Spencer Graves spencer.graves at structuremonitoring.com
Mon May 21 01:15:24 CEST 2012


On 5/20/2012 5:52 AM, Gabor Grothendieck wrote:
> On Sun, May 20, 2012 at 8:30 AM, Gabor Grothendieck
> <ggrothendieck at gmail.com>  wrote:
>> On Sat, May 19, 2012 at 9:32 PM, Spencer Graves
>> <spencer.graves at structuremonitoring.com>  wrote:
>>> Hello, All:
>>>
>>>
>>>       The "writeFindFn2xls" function in the "sos" package tries to write an
>>> Excel file with 3 sheets ('PackageSum2', 'findFn', 'call'). Unfortunately,
>>> it is often unable to do this because of configuration problems that are not
>>> easy to fix.  I've found 3 contributed packages that provide facilities to
>>> write Excel files with multiple sheets. Unfortunately, I can't get any of
>>> them to work consistently for me. Below please find test cases that
>>> illustrate the problems.  Any suggestions for how to solve this problem will
>>> be appreciated.
>>>
>>>
>>>       Thanks,
>>>       Spencer
>>>
>>>
>>> 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'
>>>
>>> write.xls(c(df1,df2), outFile)
>>> # works
>>>
>>> do.call(write.xls, list(c(df1, df2), outFile))
>>> # Error in get(s[i]) : object 'structure(list(c1=1:2' not found
>>>
>> Try this:
>>
>> dd<- list(df1 = df1, df2 = df2)
>> do.call("WriteXLS", list("dd", outFile))
>>
>> or this:
>>
>> do.call("WriteXLS", list(c("df1", "df2"), outFile)
>>
> That was for WriteXLS.  For dataframes2xls try this:
>
> do.call("write.xls", list(quote(c(df1, df2)), outFile))

Hi, Gabor:  Thanks.  I think we're gaining on it, but I'm still not 
quite there.  Consider the following extension of my previous toy example:

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'

write.xls(c(df1,df2), outFile)
# works

do.call(write.xls, list(quote(c(df1, df2)), outFile))
# works

df2x <- function(x, file)
     do.call(write.xls, list(x, file))
df2x(quote(c(df1, df2)), outFile)
# works

df2 <- function(x1, x2, file){
     x23 <- quote(c(x1, x2))
     do.call(write.xls, list(x23, file))
}
df2(df1, df2, outFile)
# Error in get(s[i]) : object 'x1' not found


       This is closer to what I need.  The answer may lie in getting the 
right "envir" argument for "do.call".  However, I haven't yet found 
something that works there.


       Thanks,
       Spencer
>
> and also check out this page:
>
> http://rwiki.sciviews.org/doku.php?id=tips:data-io:ms_windows
>
>


-- 
Spencer Graves, PE, PhD
President and Chief Technology Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph:  408-655-4567
web:  www.structuremonitoring.com



More information about the R-help mailing list