r - 从泛型函数创建新方法会在 R 中产生错误
问题描述
我正在 R 工作室写一个包。我创建了一个函数,它将创建一个类“mytrack”的对象,然后从现有的泛型中定义了几个方法,并在下面的代码中定义了一个具有新泛型的新方法。使用此构造函数创建的新对象将属于“mytrack”类,并将保存一些元数据以及点的坐标,这些点共同组成一条线。函数“distance2”将根据坐标计算这条线的长度。我的整个程序包以及计算距离的功能。问题是当我做 check() 时我得到 1 个便条。注意在代码之后。我的问题如下:
- 怎么了?
- 我如何解决它?
#' Constructor for object of a type "mytrack"
#'
#' @param name Name of the track
#' @param time Timestamps for points
#' @param crs CRS code
#' @param coordinates LON-LAT coordinates
#'
#' @return Object of a class "mytrack
#' @export
#'
#' @examples
#' \dontrun{
#' obj1 <- storetracks3("Track1", my_timestamps, 4326, my_coordinates)
#' }
storetracks3 <- function(name,time,crs,coordinates) {
value <- list(my_name = name, my_time = time, my_crs = crs, my_coords=coordinates)
attr(value, "class") <- "mytrack"
value
}
#' Print method for class "mytrack"
#'
#' @param x object of a class "mytrack"
#' @param ... further arguments passed to or from other methods.
#'
#' @return Prints elements of object of a class "mytrack"
#' @export
#'
#' @examples
#' \dontrun{
#' print(obj1)}
print.mytrack <- function(x, ...) {
cat("Name of this object is",x$my_name, "\n")
cat("Timestamps are ", x$my_time, "\n")
cat("CRS used is ", x$my_crs, "\n")
print(x$my_coords)
}
#' Summary method for class "mytrack"
#'
#' @param object object of a class "mytrack"
#' @param ... further arguments passed to or from other methods.
#'
#' @return Prints summary of objects of a class "mytrack"
#' @export
#'
#' @examples
#' \dontrun{
#' summary(obj1)}
summary.mytrack <- function(object, ...) {
cat("Object has ", nrow(object$my_coords), " coordinates." )
}
#' Plot method for class "mytrack"
#'
#' @param x Object of a class "mytrack"
#' @param y Not used
#' @param ... Not used
#'
#' @return Plot in Cartesian xy system where Longitude is plotted on x and
#' latitude is plotted on y
#' @export
#'
#' @examples
#' \dontrun{
#' plot(obj1)}
plot.mytrack <- function(x,y, ...) {
plot(x$my_coords,type="l")
}
#' Generic distance function
#'
#' @param obj Object of class "mytrack"
#' @param status TRUE for using S2 for distance calculation, or FALSE for not using it
#'
#' @return Distance in meters
#' @export
#'
distance2 <- function(obj,status) {
UseMethod("distance2")
}
#' Distance method for "mytrack" class objects
#'
#' @param obj Object of class "mytrack"
#' @param status TRUE for using S2 for distance calculation, or FALSE for not using it
#'
#' @return Distance in meters
#'
#' @export
#' @import sf
#' @examples
#' \dontrun{
#' distance2.mytrack(obj1,TRUE)
#' }
distance2.mytrack <- function(obj,status) {
sf::sf_use_s2(status)
points <- list()
for(row in 1:nrow(obj$my_coords)) {
point <- sf::st_point(c(obj$my_coords[c(row),c(1)],obj$my_coords[c(row),c(2)]))
points[[row]] <- point
}
sfc_object <- sf::st_sfc(points, crs=obj$my_crs)
sf_object <- sf::st_sf(geom=sfc_object)
points.nested <- sf_object %>% tidyr::nest(data=geom)
to_line <- function(tr) sf::st_cast(sf::st_combine(tr), "LINESTRING") %>% .[[1]]
(tracks <- points.nested %>% dplyr::pull(data) %>% purrr::map(to_line) %>% sf::st_sfc(crs = obj$my_crs))
return(as.integer(sf::st_length(tracks)))
}
注意我得到:
distance2.mytrack: no visible binding for global variable ‘geom’
distance2.mytrack : to_line: no visible binding for global variable ‘.’
distance2.mytrack: no visible binding for global variable ‘data’
Undefined global functions or variables:
. data geom
Consider adding
importFrom("utils", "data")
to your NAMESPACE file.
感谢你的帮助。如有必要,我可以提供更多信息。
解决方案
推荐阅读
- laravel - Laravel Passport 授权仅适用于 1 个第三方网站
- ms-access - MS Access 使用数据透视将行转换为列
- css - css浏览器兼容性firefox不工作
- caffe - 如何使用 caffe 模型提供的监督更新 pytorch 模型?
- sql - RedShift - 如何通过复合主键过滤表中的记录?
- web-scraping - 如何在 Linux 服务器上进行网络抓取
- r - 仅提取带有应用和子中断的字符串列的数字部分
- javascript - 在 div 上调用函数
- reactjs - Highcharts 不呈现:React+Typescript+Highcharts
- php - 图片上传在 Linkedin V2 API 中不起作用