首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XLConnect、rJava与包装建筑

XLConnect、rJava与包装建筑
EN

Stack Overflow用户
提问于 2015-07-23 22:02:54
回答 1查看 337关注 0票数 1

我正在编写一个函数,我想包含在一个用户定义的包(MYPACKAGE)中。其职能如下:

代码语言:javascript
复制
readSchedule <- function(FILE){
    WB = loadWorkbook(FILE)
    WS= readWorksheet(WB, sheet = 'Sheet1',header = TRUE)
    return(WS)
}

其中文件是我想要读取的Excel文件的名称。在编写此函数时,我希望它导入XLConnect,因为这是它使用的包。我放置了定义函数的头代码:

代码语言:javascript
复制
@param FILE Excel file
@return Excel data
@export
@import XLConnect

我还将导入(XLConnect)添加到MYPACKAGE的命名空间和描述文件中。这个包构建得很好(或者至少在一开始它似乎构建了OK),但是当我运行"Check Package“时,它失败了,并给出了以下错误:

代码语言:javascript
复制
* 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),但是我得到了相同的错误。下面是我的sessionInfo:

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-28 15:19:35

看起来,您正在Windows 64位计算机上构建包,安装了64位版本的Java。在使用R CMD check检查您的包时,R默认情况下也会尝试在其他子体系结构(i386,32位)上检查您的包,在您的情况下,这些子体系结构还需要安装32位的Java。

如果您还想检查包中的i386,您可以另外安装Java 32位。另一个选项是将选项--no-multiarch传递给您的R CMD check调用,例如R CMD check --no-multiarch MYPACKAGE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31598842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档