【问题标题】:Error use other library when I use Rstudio and Roxygen2 to build a package使用 Rstudio 和 Roxygen2 构建包时使用其他库时出错
【发布时间】:2015-08-25 16:00:09
【问题描述】:

为了简化问题。我尝试了以下事情。我的目标是构建一个需要另一个库的简单包。

我使用 RStudio 并尝试创建一个新包,并将项目选项选中“使用 Roxygen 生成文档”。我得到以下代码:

#' Title just a test
#'
#' @return nothing
#' @export
#'
#' @examples
#' hello()
hello <- function() {
  print("Hello, world!")
}

我“检查”了它并由 RStudio “构建并重新加载”了它,一切都很好。 然后我尝试在代码的头部添加一行:

library("data.table")

#' Title just a test
#'
#' @return nothing
#' @export
#'
#' @examples
#' hello()
hello <- function() {
  print("Hello, world!")
}

然后我失败了,得到以下结果:

* checking whether package 'kanpu.temp' can be installed ... ERROR
Installation failed." 

当我检查日志时,它说:

* installing *source* package 'kanpu.temp' ...
** R
** preparing package for lazy loading
Error in library("data.table") : there is no package called 'data.table'
Error : unable to load R code in package 'kanpu.temp'
ERROR: lazy loading failed for package 'kanpu.temp'
* removing 'D:/onedrive/program/R/kanpu.temp.Rcheck/kanpu.temp'

我确信 data.table 是我的 RStudio 系统中的一个现有包。并且还尝试了其他包,如“ggplot2”、“plyr”,并得到相同的结果。

那么我该如何解决这个问题呢?

环境是:

Win7 64
RStudio 0.99.473
R 3.1.3 64

在检查了“编写 R 扩展”之后,我知道代码出了什么问题。

我应该在“DESCRIPTION”文件中使用“Import”或“Depends”。

【问题讨论】:

  • 为什么需要在那里调用该库?
  • 为了简化问题,我删除了所有其他代码。真正的代码需要ggplot2。

标签: r


【解决方案1】:

查看错误信息,您似乎没有安装ggplot2 包。当 R 到达library(ggplot2) 行时,这将导致错误。

解决方案是安装那个包:

install.packages("ggplot2")

然而,您可能不应该在打包代码中调用library。一个包应该尽可能少地改变外部环境。

相反,请在 DESCRIPTION 中根据需要标记包并进行完全限定的函数调用:SomePackage::someFunction()

Hadley's pages for further information

【讨论】:

  • 我确定已经安装了ggplot2,我也尝试了其他包,如“data.table”、“plyr”,得到了相同的结果。你的建议很好,但没有解决我的问题。谢谢。
  • library 调用的目的是什么?如果您需要访问包的成员,请使用::。如果你想确保当你的包被加载时另一个也被加载,把那个包放在你的DESCRIPTIONDepends 部分。另一个想法:你有没有尝试在控制台中调用 `library("data.table") 之前你在 RStudio 中构建?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-20
  • 1970-01-01
相关资源
最近更新 更多