Универсальная функция для построения координат объекта не будет работать

#r #dataframe

Вопрос:

Я создал новый класс в R, который называется «mytrack».

 storetracks <- function(name,time,crs,coordinates) {
  value <- list(my_name = name, my_time = time, my_crs = crs, my_coords=coordinates)
  attr(value, "class") <- "mytrack"
  value
}
 

Я также создал другой класс под названием «мультитреки», который действует как держатель для большего количества объектов класса «mytrack»:

 multitracks <- function(lineobject) {
  my_dictionary <- hash::hash()
  my_dictionary[[lineobject$my_name]] <- lineobject
  value <- list(lines = my_dictionary)
  attr(value, "class") <- "multitracks"
  value

}
 

Объект класса «mytrack» имеет фрейм данных, который содержит координаты, и для их построения я создал небольшую функцию из общей функции «plot» :

 plot.mytrack <- function(x,y, ...) {
  plot(x$my_coords,type="l")
}
 

У меня была аналогичная идея для объекта типа «multitracks», поэтому, если бы я вызвал на нем функцию plot (), она создала бы график для каждого трека класса «mytrack», хранящегося в нем.

Поэтому для этого я создал образец объекта класса «multitracks» и попытался построить из него один трек таким образом (в этом случае my_object относится к классу «mytrack», и описанная выше функция построения, созданная для «mytrack», называется:

 plot(my_tracks_holder$lines$my_object)
 

Так что все это прекрасно работает. Проблема заключается в том, когда я пытаюсь создать plot() для объекта «мультитреки» :

 plot.multitracks <- function(x, y, ...) {
  for (key in hash::keys(x$lines)) {
    plot(x$lines$key)
  }
}
 

И позвони

 plot(my_tracks_holder)
 

Это приводит меня к ошибке:

 Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) :
 Error in plot.window(...) : need finite 'xlim' values 
 

По сути, используемые пути одинаковы и должны работать. Чего мне не хватает?