背景:
我正在编写一个小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)
}
,我隐式要求我的函数用户安装包SpatialPolygonsDataFrame
和sp
(或用于导入空间数据的其他包)并加载。但是,我也明确地使用这些包中的方法。我是否必须将这些包添加到描述文件的rgdal
部分?我开始阅读Depends vs. Imports,并对如何编写方法的导入感到困惑,然后偶然发现隐含的要求。
感谢任何澄清评论!
答案 0 :(得分:1)
是的,您需要将其中一个包添加到Imports:
(在DESCRIPTION
中),
但另外你还需要好好利用
NAMESPACE
文件,即一行
importClassesFrom("sp", spatialPolygonsDataFrame)
如果关于名称空间的阅读太难,我会使用其他(质量好!)软件包作为示例。
sp
包本身就是一个值得学习的好例子。