作为一个极简工作示例,我正在尝试从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)
我在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
。显然我必须忽略了一些明显的东西——出了什么问题?
@import MASS
只会将 MASS 中的函数显示在当前搜索路径中。您可以使用MASS::abbey
来访问此变量。在官方手册 "Writing R extensions" 中有一个相当长的章节介绍“包命名空间” - 这些命名空间似乎相当棘手。 - Patrick Roocks#' importFrom MASS abbey
吗? - GSee