1

一部の R データをフォーマットされた Excel ファイルにエクスポートする必要があり、以前に R で XLConnect と xlsx パッケージの両方を正常に使用しました。私は最近 64 ビット R に移行しましたが、どちらも動作しません。私は、他の多くのパッケージで、いくつかの Oracle/Java アーキテクチャの競合に取り組みました。ここで同様のことが起こっていると確信していますが、それをクラックすることはできません。

私が電話すると、library(XLConnect)問題なく取り付けられます。rJavaXLConnectJars

エラーとセッション情報は次のとおりです。

> library(XLConnect)
Loading required package: XLConnectJars
Error : .onLoad failed in loadNamespace() for 'XLConnect', details:
  call: .jfindClass(as.character(class))
  error: class not found
Error: package or namespace load failed for ‘XLConnect’

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] XLConnectJars_0.2-12

loaded via a namespace (and not attached):
[1] rsconnect_0.4.3 tools_3.3.1     rJava_0.9-8    

をアタッチしようとすると、同様のエラーが発生しますxlsx

> library(xlsx)
Loading required package: rJava
Loading required package: xlsxjars
Error : .onAttach failed in attachNamespace() for 'xlsx', details:
  call: .jnew("org/apache/poi/xssf/usermodel/XSSFWorkbook")
  error: java.lang.UnsupportedClassVersionError: Bad version number in .class file
Error: package or namespace load failed for ‘xlsx’

32 ビット R に切り替えると、 と の両方ですべてが正常に動作しXLConnectますxlsx。他の要件のために64ビットRを実行する必要があります。

4

1 に答える 1

1

技術的なことは省きますが、64 ビット バージョンの R を使用するには、64 ビット バージョンの Java が必要です。

これであなたが投稿した質問は解決しますが、Excel に接続するためにJava ベースXLConnectおよびJava パッケージを放棄することで、より多くのことが解決されると思います。xlsx代わりにopenxlsx-package を使用してください。他の 2 つと同じこと (はい、書式設定された Excel シートのエクスポートも) を行いますが、Java には依存しません。

Java では 64 ビット/32 ビットの問題がないだけでなく、いくつかの利点があります。

まず、大きなテーブルで作業している間、OutOfMemoryErrors に直面することはありません:

エラー: OutOfMemoryError (Java): GC オーバーヘッドの制限を超えました。

次に、Java ベースのパッケージでエラーが表示されない場合でも、大きなテーブルを処理するには時間がかかることがあります。openxlsxこれらの問題はありません。

最後に、個人的な注意として、最初はパッケージを切り替えるのをためらっていましたが、Java ベースのパッケージの嫌いな点はすべて解決され、構文は非常に似ています。

于 2016-11-02T09:32:57.577 に答える