12

我正在尝试将 excel 工作表导入 r。我使用了以下代码:

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

第一行工作正常,但是,运行第二行会出现以下错误:

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

我在该表中没有缺失值。

出于复制目的,请trial.xlsxhttps://github.com/ahmedfsalhin/1stpaper下载。

系统信息:优胜美地操作系统。

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 Studio 中,转到包并删除与 XLConnect 和 xlsx 相关的所有包。然后通过键入仅安装 XLConnect 包

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

在此之后,该问题不应该存在。

于 2015-04-09T03:05:00.843 回答
5

在测试三个不同的包以将 .xlsx 文件加载到 R (XLConnectxlsxgdata)时,我遇到了同样的问题。解决方案是指定命名空间loadWorkbook

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

然后它可以工作,无论xlsx是否加载/安装。错误是因为xlsx中还有一个同名的函数,它默认使用错误的函数,这取决于加载包的顺序。

于 2015-11-14T19:52:00.853 回答
-1

试试这个,而不是 x <- readWorksheetFromFile("x.xlsx") 在 XLConnenct 包中。

于 2018-07-02T03:16:28.583 回答