Message-ID: <4FB97B0C.2020906@structuremonitoring.com>
Date: 2012-05-20T23:15:24Z
From: Spencer Graves
Subject: write.xls
In-Reply-To: <CAP01uRnD8t8_t95s84dwgh8Uht3Q9dWhTPEp+oGr9i2H87n25w@mail.gmail.com>
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