метод предложения доллара в S3 - PullRequest
1 голос
/ 05 мая 2020

Я сейчас делаю R-пакет, и мне нужно выбирать между возвращаемыми списками и объектом с атрибутами S3. Что касается списков, то хорошо то, что их очень легко использовать для новичков, так как знак доллара позволяет легко найти все элементы. Плохо то, что он удаляет прямое наследование (я хотел бы вернуть объект ts с некоторой дополнительной информацией).

Альтернативой будет установка доллара для моего класса S3, как в этом примере:

object <- 1
class(object) <- "MyClass"
attr(object,"MyAttribute") <- "This is a secret"

`$.MyClass` <- function(x,name) attr(object,name)

object$MyAttribute

Однако у меня есть 2 вопроса по этому поводу:

  • Где установить функцию частичного сопоставления в долларах, чтобы пользователь видел «MyAttribute» как допустимый выбор в rstudio?
  • Кроме того, это хорошая практика, или я должен продолжать использовать простые списки

Спасибо

1 Ответ

2 голосов
/ 05 мая 2020

Я не думаю, что RStudio в настоящее время допускает такую ​​настройку. В других терминалах R вы можете играть с rcompgen для генерации завершений, но IIR C RStudio делает свое дело.

Тем не менее, ваш вопрос, похоже, основан на ложной дихотомии :

Кроме того, это хорошая практика, или я должен продолжать использовать простые списки

Вам не нужно выбирать или – или. На самом деле, обычно есть списки с классами S3, и не обычно используют атрибуты для хранения информации S3, доступ к которой затем осуществляется через $. Просто внесите свой класс в список:

object = structure(
    list(value = 1, MyAttribute = "This is a secret"),
    class = "MyClass"
)

object$MyAttribute
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...