【发布时间】:2014-10-05 12:49:08
【问题描述】:
我正在开发我的第一个包 - 实际上我正在打包一些现有代码 - 在 RStudio 中。我已经用 roxygen2 标记了所有 cmets,这已经生成了一个正确的 NAMESPACE 文件,其中包括:
import(sp)
importFrom(geosphere,distMeeus)
importFrom(geosphere,distm)
我正在使用 geosphere 包中的 distm() 函数来计算距离矩阵,但它失败了:
.pointsToMatrix(x) 中的错误:找不到函数“is.projected” 4 .pointsToMatrix(x) 3 distm(OCC, SPAD, fun = distMeeus) 在 peta.R#79
现在is.projected() 在我已经导入的 sp 包中,所以它应该在我的搜索路径中。不应该吗?
作为一个实验,我刚刚在调用我的包代码之前调用了library(geosphere)(它也加载了 sp),并且我的函数已经过了那个点。 Soooo,我还需要为每个包裹拨打library()吗?这似乎有点多余,在这一点上,我想我会停下来看看是否有人可以在我进一步破坏任何东西之前让我直截了当......
【问题讨论】:
-
您是否已将
IMPORTS: sp添加到您的DESCRIPTION文件中? -
嗨@Andrie,DESCRIPTION文件确实有“进口:... sp,geosphere”
-
将
sp从Imports移动到Depends有效。我一直在阅读Writing R Extensions,但我实际上无法弄清楚为什么会出现这种情况。我感觉这与加载包裹与附加包裹之间的区别有关,但一分钱对我来说还没有下降。 -
尝试以下操作:将
methods添加到您的 Imports,即Imports: methods以及您的 NAMESPACE,即import(methods)。我知道这听起来很随意,但如果可行,我会尽力解释原因。 -
这工作@Andrie!