R e programmazione orientata agli oggetti

La programmazione orientata agli oggetti in un modo o nell’altro è molto ansible in R. Tuttavia, a differenza di Python, esistono molti modi per ottenere l’orientamento agli oggetti:

  • Il pacchetto R.oo
  • Classi S3 e S4
  • Classi di riferimento
  • il pacchetto proto

La mia domanda è:

Quali principali differenze distinguono questi modi di programmazione OO in R?

Idealmente, le risposte qui serviranno come riferimento per i programmatori R che cercano di decidere quali metodi di programmazione OO si adattano meglio alle loro esigenze.

Come tale, sto chiedendo dettagli, presentati in modo objective, basati sull’esperienza e supportati da fatti e riferimenti. Punti bonus per chiarire come questi metodi si associano alle pratiche OO standard.