Eu uso os dois. Geralmente protótipo de funções e algoritmos no Matlab porque, como afirmado, é mais fácil expressar um algoritmo em algo próximo de uma linguagem matemática pura.
R tem excelentes bibliotecas. Ainda estou aprendendo, mas estou começando a deixar o Matlab na poeira, porque quando você conhece o R, também é bastante fácil criar protótipos de funções lá.
No entanto, acho que se você deseja que os algoritmos funcionem eficientemente dentro de um ambiente de produção, é melhor mudar para uma linguagem compilada como C ++. Tenho experiência em agrupar C ++ em Matlab e R (e, nesse caso, excel), mas tive uma experiência melhor com R. Isenção de responsabilidade: como estudante de graduação, não usei uma versão recente do Matlab para minhas dlls, Eu tenho trabalhado quase exclusivamente no Matlab 7.1 (que tem 4 anos). Talvez as versões mais recentes funcionem melhor, mas consigo pensar em duas situações em que uma dll C ++ na parte de trás do Matlab causou a tela azul do Windows XP porque caminhei de maneira inadequada fora dos limites de uma matriz - um problema muito difícil de resolver. depure se o seu computador reiniciar toda vez que você cometer esse erro ...
Por fim, a comunidade R parece estar crescendo muito mais rápido e com muito mais impulso do que a comunidade Matlab já teve. Além disso, como é gratuito, você também não tem contato com o gerenciador de licenças flexlm esquecido por Deus.
Nota: Quase todo o meu desenvolvimento está nos algoritmos do MCMC agora. Faço cerca de 90% na produção em C ++ com a visualização em R usando o ggplot2.
Atualização para comentários paralelos:
Uma boa parte do meu tempo de desenvolvimento atualmente é gasta em paralelo às rotinas do MCMC (é minha tese de doutorado). Eu usei a caixa de ferramentas paralela do Matlab e a solução Star P (que eu acho que agora é de propriedade da Microsoft ?? - eita, outra é devorada ...) Eu achei a caixa de ferramentas paralela um pesadelo de configuração - quando eu a usei, exigia acesso raiz a todos os nós do cliente. Acho que eles corrigiram esse pequeno "bug" agora, mas ainda estão uma bagunça. Eu achei a solução * 'p elegante, mas geralmente difícil de definir. Eu não usei Jacket , mas ouvi coisas boas. Também não usei as versões mais recentes da caixa de ferramentas paralelas, que também suportam o cálculo da GPU.
Não tenho praticamente nenhuma experiência com os pacotes paralelos R.
Minha experiência é que o código paralelo deve ocorrer no nível C ++, onde você tem uma granularidade de controle mais fina para decomposição de tarefas e alocação de memória / recurso. Descobri que, se você tentar paralelizar programas em um nível alto, geralmente recebe apenas uma aceleração mínima, a menos que seu código seja trivialmente decomponível (também chamado de paralelismo fictício). Dito isso, você pode até obter velocidades razoáveis usando uma linha única no nível C ++ usando o OpenMP:
#pragma omp parallel for
Esquemas mais complicados têm uma curva de aprendizado, mas eu realmente gosto de onde as coisas do gpgpu estão indo. No JSM deste ano, as poucas pessoas com quem conversei sobre o desenvolvimento de GPU no R o citam como sendo apenas "dedos no fundo do poço", por assim dizer. Mas, como afirmado, tenho experiência mínima - para mudar no futuro próximo.