R è principalmente un linguaggio di programmazione funzionale. Ha alcune eccezioni in cui le cose vengono fatte tramite effetti collaterali, quindi non è così funzionale come Haskell. Tuttavia, se non si è disposti ad adattare il proprio stile di programmazione all'uso delle funzioni, si avrà un po 'di difficoltà a scrivere codice R efficiente. (L'unica ragione per cui sto scrivendo questa risposta è che chiamare R un linguaggio orientato agli oggetti sarà fuorviante per le persone che vengono in attesa di poter inviare messaggi di funzione agli oggetti dati nello stesso modo in cui lo fanno con Java. R usa la classe di un oggetto come meccanismo di selezione della spedizione per le funzioni "generiche", ma non è lo stesso paradigma dei linguaggi OO completi.
R ha tra tre, quattro o cinque classi di oggetti principali a seconda di come si pensa su di loro e sui tipi di funzione associati. Le funzioni S3 originali che inviano solo sulla classe dei loro primi argomenti sono probabilmente ancora le più comunemente utilizzate, sebbene la classe S4 che può inviare invii a più argomenti sia ampiamente utilizzata nel mondo BioConductor. Gli oggetti con classe di riferimento o R5 o proto-classe somigliano di più ai tipi di dati di programmazione orientati agli oggetti. Sono un po 'vago in quest'ultima frase, perché mi manca molta esperienza con loro.
SAS è principalmente un linguaggio procedurale. È possibile definire le funzioni, ma non è il modo in cui la maggior parte delle persone interagisce con SAS e i suoi SET di dati, almeno all'inizio. Almeno quando l'ho usato 15 anni fa, non aveva un modello di oggetti. Direi che il suo principale vantaggio è il supporto superiore per la "scrittura di relazioni".
(Il commento che la manipolazione dei dati è "difficile in R" indica semplicemente la mancanza di esperienza. La quantità di codice necessaria per la manipolazione dei dati in R è molto inferiore al codice utilizzato dai miei colleghi SAS. in SAS, quindi la conversione sarà difficile, ma quelli di noi che sono cambiati in genere hanno bloccato con R.)
fonte
2015-06-30 18:52:13
Posso darti quello che Hadley Wickham pensa della tua domanda, leggi [qui] (http://adv-r.had.co.nz/Functional-programming. html). – SabDeM
Si potrebbe dividere questa domanda in due poiché R e SAS sono abbastanza diversi, in particolare quando si tratta di programmazione orientata agli oggetti. – C8H10N4O2