Io uso entrambi. Spesso prototipo di funzioni e algoritmi in Matlab perché, come detto, è più facile esprimere un algoritmo in qualcosa che è vicino a un linguaggio matematico puro.
R ha librerie eccellenti. Lo sto ancora imparando, ma sto iniziando a lasciare Matlab nella polvere perché una volta che conosci R, è anche abbastanza facile prototipare le funzioni lì.
Tuttavia, trovo che se si desidera che gli algoritmi funzionino in modo efficiente all'interno di un ambiente di produzione, è meglio passare a un linguaggio compilato come C ++. Ho esperienza nell'involgere C ++ sia in Matlab che in R (ed eccelle per quella materia), ma ho avuto un'esperienza migliore con R. Disclaimer: essendo uno studente laureato, non ho usato una versione recente di Matlab per le mie dll, Ho lavorato quasi esclusivamente in Matlab 7.1 (che è come 4 anni). Forse le versioni più recenti funzionano meglio, ma riesco a pensare a due situazioni nella parte superiore della mia testa in cui una DLL C ++ nella parte posteriore di Matlab ha causato la schermata blu di Windows XP perché ho camminato in modo inappropriato al di fuori dei limiti di un array - un problema molto difficile da eseguire il debug se il computer si riavvia ogni volta che si commette l'errore ...
Infine, la comunità R sembra crescere molto più velocemente e con molto più slancio di quanto la comunità Matlab abbia mai avuto. Inoltre, poiché è gratuito, non hai nemmeno a che fare con il gestore di licenze flexlm Godforsaken.
Nota: quasi tutto il mio sviluppo è attualmente in algoritmi MCMC. Faccio circa il 90% della produzione in C ++ con la visualizzazione in R usando ggplot2.
Aggiornamento per commenti paralleli:
Una buona parte del mio tempo di sviluppo in questo momento è dedicato alla parallelizzazione delle routine MCMC (è la mia tesi di dottorato). Ho usato toolbox parallela del Matlab e la soluzione di Stella P (che credo sia ora di proprietà di Microsoft ?? - jeez un altro è inghiottito ...) ho trovato la casella degli strumenti in parallelo ad essere una configurazione incubo - quando l'ho usato, ha richiesto l'accesso come root a ogni singolo nodo client. Penso che abbiano risolto quel piccolo "bug" ora, ma ancora un casino. Ho trovato * 'p soluzione elegante, ma spesso difficile da profilare. Non ho usato Jacket , ma ho sentito cose buone. Inoltre non ho usato le versioni più recenti della toolbox parallela che supportano anche il calcolo della GPU.
Non ho praticamente alcuna esperienza con i pacchetti R parallel.
È stata la mia esperienza che il parallelismo del codice deve avvenire a livello C ++ in cui si dispone di una granularità più fine di controllo per la decomposizione delle attività e l'allocazione di memoria / risorse. Trovo che se si tenta di parallelizzare i programmi ad alto livello, spesso si riceve solo una velocità minima a meno che il codice non sia banalmente scomponibile (chiamato anche parallelismo fittizio). Detto questo, puoi persino ottenere ragionevoli accelerazioni usando una linea singola a livello di C ++ usando OpenMP:
#pragma omp parallel for
Schemi più complicati hanno una curva di apprendimento, ma mi piace molto dove vanno le cose di gpgpu. A partire da JSM quest'anno, le poche persone con cui ho parlato dello sviluppo della GPU in R lo citano come "dita dei piedi nel profondo" per così dire. Ma come detto, ho un'esperienza minima - per cambiare nel prossimo futuro.