12

Excelシートをrにインポートしようとしています。次のコードを使用しました。

x <- loadWorkbook("x.xlsx")
b <- readWorksheet(x, sheet="b")

最初の行は問題なく動作しますが、2 行目を実行すると次のエラーが発生します。

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘readWorksheet’ for signature ‘"jobjRef", "character"’

そのシートに欠損値はありません。

再現する場合はhttps://github.com/ahmedfsalhin/1stpapertrial.xlsxからダウンロードしてください。

システム情報: Yosemite オペレーティング システム。

4

4 に答える 4

17

「根本的な原因」は、関数とそれが属するパッケージの両方を指定するコードを追加する必要があることです。XLConnect::loadWorkbookこの場合、必要なものを入力して選択します。では、「混乱」や重複する関数名のランダムな選択はありません R。選択は、読み込まれたすべてのパッケージの読み込み順序によって異なります。入力したコマンドに対してパッケージがチェックされる順序を確認するために使用search()します。

例えば、現在私は得る

search()
 [1] ".GlobalEnv"            "package:caTools"      
 [3] "package:XLConnect"     "package:XLConnectJars"
 [5] "package:stats"         "package:graphics"     
 [7] "package:datasets"      "package:vecsets"      
 [9] "package:cgwtools"      "package:grDevices"    
[11] "package:utils"         "package:methods"      
[13] "Autoloads"             "package:base"

.GlobalEnvたとえば、環境 ( ) 内のすべてが最初に選択され、読み込まれたすべてのライブラリがbaseパッケージを オーバーライドすることに気付くでしょう。

于 2014-10-28T11:32:05.990 に答える
7

多くの闘争の後、これに対する解決策が見つかりました。R スタジオでパッケージに移動し、XLConnect および xlsx に関連するすべてのパッケージを削除します。次に、次のように入力して、XLConnect パッケージのみをインストールします。

install.packages("XLConnect", dependencies=TRUE)

この後、問題は存在しないはずです。

于 2015-04-09T03:05:00.843 に答える
5

.xlsx ファイルを R にロードするための 3 つの異なるパッケージ ( XLConnectxlsxgdata ) をテストしているときに、同じ問題が発生しました。解決策は、の名前空間を指定することでしたloadWorkbook:

d3_wb = XLConnect::loadWorkbook("Megadataset_v3.xlsx")
d3 = readWorksheet(d3_wb, 1)

その後、xlsxがロード/インストールされているかどうかに関係なく機能します。エラーは、 xlsxにも同じ名前の関数があり、パッケージが読み込まれた順序に応じて、間違った関数を使用するようにデフォルト設定されているためです。

于 2015-11-14T19:52:00.853 に答える