Замена метода показа для класса S4 перед загрузкой класса - PullRequest
1 голос
/ 03 августа 2020

Я написал функцию, которая может заменить метод show для класса DataFrame, определенного в пакете S4Vectors. Я много работаю с этими DataFrame объектами, и мне не нравится, как работает метод show по умолчанию. Например, метод show игнорирует настройку options("digits") и всегда показывает смехотворное количество цифр. Мне нужно что-то более компактное и компактное.

Я использую для этого свой пакет colorDF , но это также можно сделать так:

library(S4Vectors)
setMethod("show", "DataFrame", function(object) show(tibble::as_tibble(as.data.frame(object))))
DataFrame(mtcars)

Это работает ну и я хотел бы установить его автоматически во всех интерактивных сеансах. Однако, если я помещаю его в .Rprofile, до того, как пакет S4Vectors станет явно или неявно загруженным / прикрепленным, я получаю сообщение об ошибке

in method for ‘show’ with signature ‘"DataFrame"’: no definition for class “DataFrame”

Однако я не хочу прикреплять S4Vectors уже в моем .Rprofile .

Есть ли способ настроить метод до определения класса или иным образом решить эту проблему, за исключением изменения источников S4Vectors?

На данный момент я загружаю пространство имен S4Vectors с помощью loadNamespace в моем профиле .R перед настройкой метода - и это работает как задумано:

## in .Rprofile
loadNamespace("S4Vectors")
setMethod("show", "DataFrame", function(object) colorDF::print_colorDF(object))
...