如何通过必需的函数参数处理隐式包依赖?

时间:2014-05-01 10:29:20

标签: r

背景:

我正在编写一个小R包RHYPE,用于导入/导出和可视化特定水文模型(HYPE)的结果。 我刚刚添加了一个map plot函数,其中一个参数是SpatialPolygonsDataFrame(参数' data'),即数据映射到的空间对象,另一个是要附加到{的新数据{1}}空间对象的插槽,稍后绘制(参数' newdata')。

一些简化的代码说明了函数的相关部分:

data

这是我的问题:

通过要求PlotMapOutput <- function(newdata, map) { # control argument type stopifnot(class(map) == "SpatialPolygonsDataFrame") # add data to map table, # merge by common column (assumed to be index 1 in both tables) map@data <- data.frame(map@data, data[match(map@data[, 1], newdata[, 1]), ]) # plot the map plot(map, col = map$color, border = NA) } ,我隐式要求我的函数用户安装包SpatialPolygonsDataFramesp(或用于导入空间数据的其他包)并加载。但是,我也明确地使用这些包中的方法。我是否必须将这些包添加到描述文件的rgdal部分?我开始阅读Depends vs. Imports,并对如何编写方法的导入感到困惑,然后偶然发现隐含的要求。

感谢任何澄清评论!

1 个答案:

答案 0 :(得分:1)

是的,您需要将其中一个包添加到Imports:(在DESCRIPTION中), 但另外你还需要好好利用 NAMESPACE文件,即一行

importClassesFrom("sp", spatialPolygonsDataFrame)

如果关于名称空间的阅读太难,我会使用其他(质量好!)软件包作为示例。

sp包本身就是一个值得学习的好例子。