#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
По сути, используемые пути одинаковы и должны работать. Чего мне не хватает?