別の不可解な問題があります。
RODBC で .xls ファイルを読み取る必要があります。基本的に、1 つのシートにすべてのセルのマトリックスが必要であり、grep や strsplits などを使用してデータを取得します。各シートには複数のテーブルが異なる順序で含まれており、いくつかのテキスト フィールドの間に他のオプションが含まれているため、のようreadLines()
に機能するものが必要ですが、Excel シートの場合は. RODBC はそれを行うための最良の方法だと思います。
私のコードのコアは次の関数です:
.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)
}
それでも、私が試したものは何でも、返されたデータ フレームの変数名として、言及されたシートの最初の行が常に使用されます。それを解決する方法はわかりません。ドキュメントによると、colnames=FALSE
それを防ぐ必要があります。
xlsReadWrite
パッケージは避けたいです。編集:およびgdata
パッケージ。クライアントのシステムに Perl がなく、インストールされません。
編集:
諦めてパッケージread.xls()
から一緒に行きました。xlsReadWrite
名前の問題は別として、RODBC は、スラッシュなどの特殊記号を含むセルを実際には読み取れないことが判明しました。「dd/mm/yyyy」形式の日付は、NA を示しました。
sqlFetch、sqlQuery、および sqlGetResults のソース コードを見て、問題がドライバーにある可能性が高いことに気付きました。どういうわけか、シートの最初の行は、通常のセルではなく、列の機能として表示されます。したがって、colnames の代わりに、DB フィールド名に相当します。そして、それはあなたが設定できないオプションです...