" 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.