r - 编写 R 包 : how to import another package?

标签 r import package

作为一个最小的工作示例,我试图从 MASS 导入一些对象。打包到我自己的包中(称为 Test) - 取 abbey数据集例如:

### In R/Test.R:
#' @import MASS
abbey     # Check that the dataset has been imported OK

### DESCRIPTION:
Package: Test
...
Imports: MASS

### NAMESPACE:
# Generated by roxygen2 (4.0.1): do not edit by hand
import(MASS)

我打了 Build & Reload在 RStudio 中并得到错误:
==> devtools::document(roclets=c('rd', 'collate', 'namespace'))

Updating Test documentation
Loading Test
Error in eval(expr, envir, enclos) : object 'abbey' not found
Writing NAMESPACE
Documentation completed

==> Rcmd.exe INSTALL --no-multiarch --with-keep.source Test

* installing to library '.../R/R-3.1.0/library'
* installing *source* package 'Test' ...
** R
** preparing package for lazy loading
Error in eval(expr, envir, enclos) : object 'abbey' not found
Error : unable to load R code in package 'Test'
ERROR: lazy loading failed for package 'Test'
* removing '.../R/R-3.1.0/library/Test'
* restoring previous '.../R/R-3.1.0/library/Test'

Exited with status 1.

似乎连最基本的import失败 - 系统找不到 abbey .显然,我必须忽略一些明显的东西 - 出了什么问题?

最佳答案

从我尝试过的:
您不能导入 abbey,因为它不是由 MASS 导出的。

> library(MASS)
> 'abbey' %in% getNamespaceExports(getNamespace('MASS'))
[1] FALSE

abbey 是一个包数据集,由 data/abbey.rda 文件定义,而不是由包定义的常规符号名称。

正如建议的那样,您应该只使用 MASS::abbey,甚至添加 R/data.R:
abbey <- MASS::abbey

在安装时复制包命名空间中的数据集。

关于r - 编写 R 包 : how to import another package?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286231/

相关文章:

java - 在 Android .aar 库中重新打包 .jar-s

r - 为多个图指定基图中的轴

android - 将库导入 Android 项目

csv - SQLite:使用 sqlite3.exe 实用程序将 CSV 文件中的 float 据作为数字导入

excel - 使用 SAS 导入时截断字符

windows-8 - 尝试重新打包 APPX 包时出现 SignTool 内部错误?

Go Lang 工作区重复包名称可执行冲突

r - 将 vline 添加到现有绘图中并使其出现在 ggplot2 图例中?

r - 将绘图分配给循环中的变量

r - ggplot2 中的点颜色和面