[R] Package RODBC
Wolfgang Raffelsberger
wraff at titus.u-strasbg.fr
Wed Mar 7 10:49:34 CET 2007
Dear Alberto,
please note that special characters (eg a space character) in the Excel
sheet names mess up the simple way of querying provided by sqlFetch.
If you have a regular case of all sheets like "Sheet1":
plan1 <- sqlFetch(channel,"Sheet1") # should work
But if you have "Sheet 1" (& similar..) you have to use the command
sqlQuery(), which means that you have to write a proper SQL query as 2nd
argument that follows proper SQL syntax (starting with "SELECT",
etc...). If I wanted to combine this with sheet-names already read in
variables/vectors I concatenate this into a single stringsimilar to your
2nd code variant ... Of course you could also use grep() to search the
position of a given sheet-name (the order of the sheets may be different
that within Excel).
What you get with
plan1[,1]
depends on what you're reading. In case that the 1st column is read as
string, this is read by default as factor with n levels. You can simply
convert it using as.character() ...
Hope this helps,
Wolfgang
Mendiburu, Felipe (CIP) a écrit :
> Dear Alberto,
>
> channel <- odbcConnectExcel("test.xls")
> name1 <- tables[1, "TABLE_NAME"] # the name1 is Sheet1$
> it must be:
> name1 <- "Sheet1"
> plan1 <- sqlFetch(channel, name1) is ok
> or
> plan1 <- sqlFetch(channel, "Sheet1")
>
> Regards,
>
> Felipe
>
> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch]On Behalf Of Alberto Monteiro
> Sent: Tuesday, March 06, 2007 9:37 AM
> To: r-help at stat.math.ethz.ch
> Subject: [R] Package RODBC
>
>
> I have some questions about the RODBC package.
>
> library(RODBC) # required for those who want to repeat these lines
>
> 1st, I noticed that the following sequence does not work:
>
> channel <- odbcConnextExcel("test.xls")
> tables <- sqlTables(channel)
> name1 <- tables[1, "TABLE_NAME"] # this should be the name
> plan1 <- sqlFetch(channel, name1) # bang!
> odbcClose(channel)
>
> However, I can circumvent this with:
>
> channel <- odbcConnextExcel("test.xls")
> tables <- sqlTables(channel)
> name1 <- tables[1, "TABLE_NAME"] # this should be the name
> plan1 <- sqlQuery(channel, sprintf("select * from [%s]", name1)) # ok
> odbcClose(channel)
>
> 2nd, it seems that only "pure" strings (which are not links to
> strings) and numerical values are correctly fetched or selected.
> Is this a bug?
>
> 3rd, when do something like plan1[,1] a weird message about Levels
> appear. What is that?
>
> Alberto Monteiro
>
>
>
--
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
Wolfgang Raffelsberger, PhD
Laboratoire de BioInformatique et Génomique Intégrative
IGBMC
1 rue Laurent Fries, 67404 Illkirch Strasbourg, France
Tel (+33) 388 65 3300 Fax (+33) 388 65 3276
wolfgang.raffelsberger at igbmc.u-strasbg.fr
More information about the R-help
mailing list