Tutoriais sobre programação orientada a objetos em R [fechado]

15

Existem bons tutoriais sobre programação orientada a objetos no R?

Seria ótimo se incluísse o seguinte:

  • como definir uma classe;
  • diferenças entre as classes S3 e S4;
  • sobrecarga do operador (eu gostaria de poder escrever a+bonde ae quais bsão as instâncias da classe que tenho em mente).
NPE
fonte

Respostas:

10

O wiki de Hadley Wickham sobre devtools é um ótimo recurso para as informações necessárias de forma concisa. No entanto, se você deseja um recurso exaustivo, a seção OOP do manual de idiomas R pode ser útil. Estou certo de que membros mais experientes terão melhores sugestões.

suncoolsu
fonte
4

" Advanced R ", de Hadley Wickham, tem boas introduções e referências. Estou replicando esta seção para uma melhor indexação.

Escolhendo um sistema

Três sistemas OO são muito para um idioma, mas para a maioria da programação R, S3 é suficiente. Em R, você geralmente cria objetos e métodos bastante simples para funções genéricas preexistentes, como print (), summary () e plot (). O S3 é adequado para essa tarefa, e a maioria do código OO que escrevi em R é S3. O S3 é um pouco peculiar, mas faz o trabalho com um mínimo de código.

Se você estiver criando sistemas mais complicados de objetos inter-relacionados, o S4 pode ser mais apropriado. Um bom exemplo é o pacote Matrix de Douglas Bates e Martin Maechler. Ele foi projetado para armazenar e computar com eficiência com muitos tipos diferentes de matrizes esparsas. A partir da versão 1.1.3, define 102 classes e 20 funções genéricas. O pacote está bem escrito e bem comentado, e a vinheta que acompanha (vinheta ("Intro2Matrix", package = "Matrix")) fornece uma boa visão geral da estrutura do pacote. O S4 também é usado extensivamente pelos pacotes Bioconductor, que precisam modelar inter-relações complicadas entre objetos biológicos. O biocondutor fornece muitos bons recursos para aprender S4. Se você domina o S3, o S4 é relativamente fácil de entender; as idéias são todas iguais,

Se você programou em uma linguagem OO convencional, o RC parecerá muito natural. Mas como eles podem introduzir efeitos colaterais por meio de um estado mutável, são mais difíceis de entender. Por exemplo, quando você costuma chamar f (a, b) em R, pode assumir que aeb não serão modificados. Mas se a e b são objetos de RC, eles podem ser modificados no local. Geralmente, ao usar objetos de RC, você deseja minimizar ao máximo os efeitos colaterais e usá-los apenas onde os estados mutáveis ​​são absolutamente necessários. A maioria das funções ainda deve ser "funcional" e livre de efeitos colaterais. Isso torna o código mais fácil de raciocinar e mais fácil para outros programadores de R entenderem.

Ele faz referência a " Um tutorial prático sobre programação S4 ".

Existem vários outros recursos interessantes se você seguir as dicas dele.

John M. Chambers diz em "Programação Orientada a Objetos, Programação Funcional e R" :

R também foi fortemente influenciado pelas idéias de programação funcional e, em particular, pelo desejo de combinar programação funcional com programação orientada a objetos.

Adicionaria algo não diretamente relacionado à pergunta, mas com a mesma idéia: "DataFrames no Spark para ciência de dados em larga escala" . Como isso aproxima Scala e R, pode haver uma grande sinergia OO / funcional.

SemanticBeeng
fonte