1

RJDBC(DBI)を使用してH2データベースに接続しています。データベースでnullであるフィールドは、dbReadTableまたはdbGetQuery関数の呼び出しの結果としてRデータフレームで暗黙的に0に変換されています。

私はこれに関するドキュメントを見つけるのに苦労しましたが、mysqlデータベースに接続しているRJDBCを使用している誰かからの問題への少なくとも1つの他の参照を見つけたので、現在、問題がH2にあるとは思わない。

データベース値がnullの場合はNAまたはNULLの方がはるかに望ましいです。RでDBIを使用するRJDBCドライバーがデータベースのnull値を暗黙的に置き換えるのを防ぐためのオプションのパラメーターまたはその他の手段はありますか?

編集:これは、数値タイプの列でのみ発生するようです。ファクターに変換されたVARCHARベースの列には、データベースNULLのNAがあるように見えます。暗黙の0変換は、数値列のNULLを処理するRJDBCの既知のバグ(または危険な機能)ですか?

4

2 に答える 2

1

暗黙的な null から 0 への変換は、RJDBC が薄いラッパーである JDBC API の「機能」であることがわかります。

http://download.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#getDouble(int)

私がびっくりしたと考えてください。

CRAN で入手可能な RJDBC 0.1-6 の最新の開発バージョンは、この誤った動作を回避し、数値 SQL の null に対して正しく NA を返すようになりました。

于 2011-03-10T16:16:25.903 に答える
1

ご指摘のとおり、これは RJDBC の問題のようです。回避策はRH2 パッケージのバージョン 0.1-2.3 に実装されています(最近 CRAN にアップロードされ、CRAN とミラーで利用できるようになりました)。

于 2011-03-07T18:08:53.263 に答える