XLConnect、rJava 和包构建
XLConnect, rJava and package building
我正在编写一个我想包含在 user-defined 包 (MYPACKAGE) 中的函数。函数如下:
readSchedule <- function(FILE){
WB = loadWorkbook(FILE)
WS= readWorksheet(WB, sheet = 'Sheet1',header = TRUE)
return(WS)
}
其中 FILE 是我要读取的 Excel 文件的名称。编写此函数时,我希望它导入 XLConnect,因为这是它使用的包。我放置了 header 定义函数的代码:
@param FILE Excel file
@return Excel data
@export
@import XLConnect
我还在 MYPACKAGE 的 NAMESPACE 和 DESCRIPTION 文件中添加了 import(XLConnect)。该包构建良好(或者至少在第一次切割时它看起来构建正常)但是当我 运行 "Check Package" 它失败并给我以下错误:
* installing *source* package 'MYPACKAGE' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
我有 Java 的正确版本,可以很好地加载 rJava。我试过导入 rJava(类似于 XLConnect),但我得到了同样的错误。下面是我的会话信息:
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
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] MYPACKAGE
loaded via a namespace (and not attached):
[1] chron_2.3-45 data.table_1.9.4 digest_0.6.8 lubridate_1.3.3 memoise_0.2.1 plyr_1.8.1
[7] Rcpp_0.11.1 reshape2_1.4 rJava_0.9-6 stringr_0.6.2 tools_3.1.2 XLConnect_0.2-7
看起来您正在 Windows 64 位机器上构建您的软件包,并且安装了 64 位版本的 Java。当使用 R CMD check
检查您的包时,R 默认情况下还会尝试在其他子架构(i386、32 位)上检查您的包,在您的情况下,还需要安装 [=19= 的 32 位].
如果您还想检查您的软件包 i386
,您可以额外安装 Java 32 位。另一种选择是将选项 --no-multiarch
传递给您的 R CMD check
调用,例如R CMD check --no-multiarch MYPACKAGE
.
我正在编写一个我想包含在 user-defined 包 (MYPACKAGE) 中的函数。函数如下:
readSchedule <- function(FILE){
WB = loadWorkbook(FILE)
WS= readWorksheet(WB, sheet = 'Sheet1',header = TRUE)
return(WS)
}
其中 FILE 是我要读取的 Excel 文件的名称。编写此函数时,我希望它导入 XLConnect,因为这是它使用的包。我放置了 header 定义函数的代码:
@param FILE Excel file
@return Excel data
@export
@import XLConnect
我还在 MYPACKAGE 的 NAMESPACE 和 DESCRIPTION 文件中添加了 import(XLConnect)。该包构建良好(或者至少在第一次切割时它看起来构建正常)但是当我 运行 "Check Package" 它失败并给我以下错误:
* installing *source* package 'MYPACKAGE' ...
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
*** arch - i386
Error : .onLoad failed in loadNamespace() for 'rJava', details:
call: fun(libname, pkgname)
error: No CurrentVersion entry in Software/JavaSoft registry! Try re-installing Java and make sure R and Java have matching architectures.
Error: loading failed
Execution halted
*** arch - x64
ERROR: loading failed for 'i386'
我有 Java 的正确版本,可以很好地加载 rJava。我试过导入 rJava(类似于 XLConnect),但我得到了同样的错误。下面是我的会话信息:
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
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] MYPACKAGE
loaded via a namespace (and not attached):
[1] chron_2.3-45 data.table_1.9.4 digest_0.6.8 lubridate_1.3.3 memoise_0.2.1 plyr_1.8.1
[7] Rcpp_0.11.1 reshape2_1.4 rJava_0.9-6 stringr_0.6.2 tools_3.1.2 XLConnect_0.2-7
看起来您正在 Windows 64 位机器上构建您的软件包,并且安装了 64 位版本的 Java。当使用 R CMD check
检查您的包时,R 默认情况下还会尝试在其他子架构(i386、32 位)上检查您的包,在您的情况下,还需要安装 [=19= 的 32 位].
如果您还想检查您的软件包 i386
,您可以额外安装 Java 32 位。另一种选择是将选项 --no-multiarch
传递给您的 R CMD check
调用,例如R CMD check --no-multiarch MYPACKAGE
.