【问题标题】:R - Importing 'xlsx' package to my own package doesn't workR - 将“xlsx”包导入我自己的包不起作用
【发布时间】:2017-05-02 12:51:16
【问题描述】:

我正在创建自己的包。我在其中使用了很多现有的包,它们可以工作。我对xlsx 包使用相同的过程,但它不起作用。我的DESCRIPTION 文件中有Imports: 中的xlsx。我在各自的 .R 文件中有@import xlsx。我还尝试了 @importFrom write.xlsx 用于具有相同结果的特定功能。我正在使用库 devtoolsroxygen2 来创建包。我的新包正在构建,但如果我继续Check,则会出现错误:

Installation failed.
See 'C:/Work/Package/MyPackage.Rcheck/00install.out' for details.
* DONE
Status: 1 ERROR
Warning: running command '"C:/R/R-3.3.3/bin/x64/Rcmd.exe" INSTALL -l "C:/Users/Work/Package/MyPackage.Rcheck" --no-html "C:\Users\Work\Package\MyPackage.Rcheck\00_pkg_src\MyPackage"' had status 1

checking whether package 'MyPackage' can be installed ... ERROR
Installation failed.
See 'C:/Users/Work/Package/MyPackage.Rcheck/00install.out' for details.
R CMD check results

但是错误中没有.out 文件。整个文件MyPackage.Rcheck 在检查过程中会出现一小段时间,然后消失。所以我无法检查.out 文件并发现错误。

我还尝试在我的代码中使用命令library(xlsx)。在这种情况下,构建和检查过程的问题较少。只有一个警告和一个注释:

WARNING
'library' or 'require' call not declared from: 'xlsx'
'library' or 'require' call to 'xlsx' in package code.
Please use :: or requireNamespace() instead.
See section 'Suggested packages' in the 'Writing R Extensions' manual.

NOTE
MyFunction: no visible global function definition for 'write.xlsx'

但我知道,如果我想将我的代码上传到 CRAN,不应该有任何警告。

我也知道xlsx包有两个依赖:rJavaxlsxjars。如果我将它们放在DESCRIPTION 文件中的Imports: 并在我的.R 文件中使用@import,则会出现同样的问题。我也试过用Depends: 得到同样的结果。

感谢大家的帮助。

【问题讨论】:

  • 从 RStudio 构建时,我有同样的经历,无法检查 MyPackage.Rcheck。尝试直接从命令行构建。
  • 或者,正如我刚刚发现的,RStudio 中有两个选项:“R CMD 检查成功后清理输出”和“R CMD 检查失败后查看Rcheck 目录”
  • 谢谢@Aurèle,它成功了。现在我看到了文件。看来我的问题是rJava问题。
  • 其他建议:转到cran.r-project.org/web/packages/xlsx/index.html,查看Reverse dependencies 部分,选择其中一个包,并查看它们的源代码以了解它们如何处理xlsx,使用qdap例如:github.com/trinker/qdap。您可以简单地阅读源代码,或者克隆他们的 repo 并尝试在本地构建,看看是否可以重现您的问题......或者可能采用更简单的方法,例如 github.com/rOpenGov/psData
  • 谢谢@Aurèle。在Reverse dependencies 的代码中,他们使用标准@import xlsx。从.out文件看,问题似乎出在我电脑上的Java上。

标签: r xlsx devtools roxygen2


【解决方案1】:

通过禁用 RStudio 选项“成功 R CMD 检查后清理输出”,我找到了 .out 文件。问题出在我计算机上的 Java 中。我使用的是 64 位版本的 R,我也有 64 位版本的 Java。所以包xlsx 正常工作。但我也在我的电脑上安装了 32 位版本的 R,但没有 32 位版本的 Java。安装后,一切正常。每个版本的 R 必须具有相同版本的 Java。一个相反的,一定没有Java版本没有R对面。

【讨论】:

    【解决方案2】:

    我在没有使用 Rstudio 的情况下在 Linux 环境中反复运行同样的问题。

    我的问题是@importFrom xlsx read.xlsx,删除它并在使用read.xlsx 的代码中添加调用xlsx::read.xlsx('myFile.xlsx', 1),然后运行R -e "devtools::document() 可以正常工作。在此之后,我再次添加了@importFrom xlsx read.xlsx 并删除了xlsx::,然后就可以正常工作了。

    我认为这可能与首先从 xlsx 包设置配置有关,因为在此之前我从未打过电话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 2016-06-18
      • 1970-01-01
      • 2015-01-06
      相关资源
      最近更新 更多