Non usando colnames durante la lettura di file .xls con RODBC
Domanda
ho un altro problema sconcertante.
ho bisogno di leggere i file .xls con RODBC. Fondamentalmente ho bisogno di una matrice di tutte le celle in un foglio, e quindi utilizzare greps e strsplits ecc per ottenere i dati fuori. Come ogni foglio contiene più tabelle in ordine diverso, e alcuni campi di testo con altre opzioni Inbetween, ho bisogno di qualcosa che funziona come readLines()
, ma poi per i fogli di excel. Credo RODBC il modo migliore per farlo.
Il nucleo del mio codice è seguente funzione:
.read.info.default <- function(file,sheet){
fc <- odbcConnectExcel(file) # file connection
tryCatch({
x <- sqlFetch(fc,
sqtable=sheet,
as.is=TRUE,
colnames=FALSE,
rownames=FALSE
)
},
error = function(e) {stop(e)},
finally=close(fc)
)
return(x)
}
Tuttavia, qualunque ho provato, richiede sempre la prima riga del foglio menzionato come i nomi delle variabili del telaio dati restituiti. Nessun indizio come ottenere che risolto. In base alla documentazione, colnames=FALSE
dovrebbe impedire questo.
Vorrei evitare il pacchetto xlsReadWrite
. Edit: e il pacchetto gdata
. Cliente non ha Perl sul sistema e non installarlo.
Modifica:
ho rinunciato e sono andato con read.xls()
dal pacchetto xlsReadWrite
. A parte il problema nome, si è scoperto RODBC non può realmente leggere le celle con i segni speciali come barre. Una data nel formato "gg / mm / aaaa" appena dato NA.
Guardando il codice sorgente di SQLFetch, sqlquery e sqlGetResults, mi sono reso conto che il problema è più che probabile nei driver. In qualche modo la prima riga del foglio è visto come qualche caratteristica colonna anziché una cellula normale. Così, invece di colnames, sono equivalenti a nomi di campo DB. E questa è un'opzione, non è possibile impostare ...
Soluzione
Si può utilizzare la soluzione basato su Perl nel GData invece ? Questo accade per essere portabile troppo ...