0

私は多数の Excel レポートを管理しており、R を使用して前処理を行い、出力レポートを作成しています。R 関数を実行してレポートを配布するだけで済み、残りのレポート作成は非アクティブな時間であるため、これは素晴らしいことです。レポートは Excel 形式である必要があります。これは、配布が最も簡単であり、対象者が多く、技術に詳しくないためです。データが前処理されたら、XLConnect を使用して非常に簡単にこれを行います。

file.copy(from = template,
          to = newFileName)

writeWorksheetToFile(file = newFileName,
                     data = newData,
                     sheet = "Data",
                     clearSheets = T)

ただし、新しいデータを書き込もうとすると、レポートの 1 つがこのエラーをスローし始めました。

Error in ls(envir = envir, all.names = private) : 
invalid 'envir' argument

さらに、エラーをスローする前に、関数は R を 15 分間拘束します。通常の書き込み時間は 10 秒未満です。正直に言うと、このエラーが何を意味するのかさえ理解できず、通常のデバッグ方法や他の SO ソリューションに屈することはありませんでした。

他の人が rJava (このパッケージを再インストールしてもうまくいきませんでした) やログ ファイルの Java キャッシュ (Mac のどこにあるのかわかりません) に言及していることに気付きました。まったく同じプロセスを使用して 1 日前にレポートが問題なく実行され、まったく同じプロセスを使用した他のレポートが引き続き正常に機能するため、特に混乱しています。

Java や R や自分の OS を更新したり、R コードをデバッグしたり書き直したりしませんでした。それで、最初から始めて、この「envir」エラーを調査するにはどうすればよいですか? あなたが私の立場だったらどうしますか?私はこれに数日間取り組んできましたが、困惑しています。

私よりも目の肥えたプログラマーにとってより良いコンテキストを提供する場合は、追加情報を提供できることを嬉しく思います:)

4

1 に答える 1

0

更新:実際、私の以前の回答(以下)は、この断続的なエラーを修正しませんでした(OPが指摘しているように、Javaの依存関係のために選択を解除するのは非常に困難です)。代わりに、ここに記載されているアドバイスに従い、XLConnectパッケージからに移行しましたopenxlsx。これにより、問題は完全に回避されます。

以前の回答: ワークブックを作成する際に R が数分間拘束されたり、断続的に表示されたりするなど、まさにこのエラーにしばらくの間不満を感じていました。

Excel ワークシートの名前の長さが 31 文字に制限されているように見え、私の R コードはこの制限を超えるワークシート名を生成していました。

明確にするために、私は Excel ワークブック内の個々のタブ付きシートの名前を参照しており、ワークブック自体のファイル名を参照していません。

各ワークシート名を 31 文字以下にトリミングすると、このエラーが修正されました。

于 2016-05-30T20:03:52.467 に答える