Признавая класс S3 (?) Из пакета в определении класса S4

StackOverflow https://stackoverflow.com/questions/4400867

  •  25-09-2019
  •  | 
  •  

Вопрос

У меня есть некоторые проблемы, получающие класс со старых пакетов были распознаны определением класса S4. Я продолжаю получать ошибку

Error in makePrototypeFromClassDef(properties, ClassDef, immediate, where) : 
  in making the prototype for class "Tsvmm" elements of the prototype failed to 
  match the corresponding slot class: dates (class "dates" )
In addition: Warning message:
undefined slot classes in definition of "Tsvmm": dates(class "dates") 

Воспроизводимый пример:

require(chron)

setClass(
  Class="Tsvmm",
  representation=representation(
      data  = "data.frame",
      dates = "dates"
  ),
  prototype=prototype(
      data  = data.frame(),
      dates = chron(0)
  )
)

При попытке class(chron(0)), ответ "dates" "times". Отказ с использованием is.numeric(chron(0)), ответ TRUE. Отказ Тем не менее, когда я устанавливаю класс дат слотов как "numeric", Я получаю ту же ошибку без предупреждающего сообщения.

У меня такое чувство, что я с видом на что-то очевидное, но я не мог найти его в документации. Кто-нибудь любой указатели?

PS: я знаю chron Пакет по крайней мере особенный, но у меня есть веские причины использования этого. Кроме того, проблема, вероятно, произойдет с другими пакетами. Смотрите это как пример для общего вопроса. Поэтому, пожалуйста, не говорите мне, чтобы использовать дату или классы POSIXT. Это взлома, я использую сейчас.

Это было полезно?

Решение

Кажется, что вам нужно setoldclass. Чтобы сделать методы считают, что даты реального класса.

Другие советы

У меня похожая проблема, потому что объекты GTK2 (например, GTK2 :: GTKBuilder) не являются классами S4, тогда как я хотел один экземпляр такого объекта в моем собственном коде. Я думаю, что я работал в целую ситуацию, удалив прототип () вещи и используя метод «инициализации ()».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top