Учебники по объектно-ориентированному программированию в R [закрыто]


15

Есть ли хорошие учебники по объектно-ориентированному программированию в R?

Было бы здорово, если бы оно включало следующее:

  • как определить класс;
  • различия между классами S3 и S4;
  • перегрузка операторов (я хотел бы иметь возможность написать, a+bгде aи bкакие экземпляры класса я имею в виду).

Ответы:


10

Вики Хэдли Уикхэма по devtools - отличный ресурс для получения необходимой информации в сжатой форме. Однако, если вам нужен исчерпывающий ресурс, раздел ООП руководства по языку R может оказаться полезным. Я уверен, что более опытные члены будут иметь лучшие предложения.



4

У « Advanced R » Хэдли Уикхэма есть несколько очень хороших вступлений и ссылок. Я тиражирую этот раздел для лучшей индексации.

Выбор системы

Три ОО-системы - это много для одного языка, но для большинства программ на R достаточно S3. В R вы обычно создаете довольно простые объекты и методы для уже существующих универсальных функций, таких как print (), summary () и plot (). S3 хорошо подходит для этой задачи, и большая часть кода OO, который я написал на R, это S3. S3 немного странный, но он выполняет работу с минимумом кода.

Если вы создаете более сложные системы взаимосвязанных объектов, S4 может быть более подходящим. Хорошим примером является пакет Matrix Дугласа Бейтса и Мартина Мачлера. Он предназначен для эффективного хранения и вычисления с различными типами разреженных матриц. Начиная с версии 1.1.3, он определяет 102 класса и 20 универсальных функций. Пакет хорошо написан и хорошо прокомментирован, а сопровождающая виньетка (vignette ("Intro2Matrix", package = "Matrix")) дает хороший обзор структуры пакета. S4 также широко используется пакетами Bioconductor, которые должны моделировать сложные взаимосвязи между биологическими объектами. Биокондуктор предоставляет много хороших ресурсов для изучения S4. Если вы освоили S3, S4 относительно легко подобрать; идеи все одинаковые,

Если вы программировали на основном языке ОО, RC будет казаться очень естественным. Но поскольку они могут вызывать побочные эффекты через изменчивое состояние, их труднее понять. Например, когда вы обычно вызываете f (a, b) в R, вы можете предположить, что a и b не будут изменены. Но если a и b являются объектами RC, они могут быть изменены на месте. Как правило, при использовании объектов RC вы хотите минимизировать побочные эффекты в максимально возможной степени и использовать их только в тех случаях, когда изменяемые состояния абсолютно необходимы. Большинство функций по-прежнему должны быть «функциональными» и не иметь побочных эффектов. Это делает код более понятным и понятным для других программистов на R.

Он ссылается на « Практическое руководство по программированию на S4 ».

Есть ряд других интересных ресурсов, если вы будете следовать его указаниям.

Джон М. Чемберс говорит в «Объектно-ориентированном программировании, функциональном программировании и R» :

На R также сильно повлияли идеи функционального программирования и, в частности, желание объединить функциональное и объектно-ориентированное программирование.

Добавил бы что-то, не имеющее прямого отношения к вопросу, но с той же идеей: «Фреймы данных в Spark для крупномасштабной науки о данных» . Поскольку это сближает Scala и R, из-за этого может получиться отличная ОО / функциональная синергия.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.