Używam obu. Często prototypuję funkcje i algorytmy w Matlabie, ponieważ, jak powiedziano, łatwiej jest wyrazić algorytm w czymś zbliżonym do czystego języka matematycznego.
R ma doskonałe biblioteki. Wciąż się tego uczę, ale zaczynam zostawiać Matlaba w pyle, ponieważ kiedy poznasz R, łatwo jest też prototypować funkcje.
Uważam jednak, że jeśli chcesz, aby algorytmy działały wydajnie w środowisku produkcyjnym, najlepiej jest przejść do skompilowanego języka, takiego jak C ++. Mam doświadczenie w pakowaniu C ++ zarówno w Matlaba, jak i R (i do tego świetnie), ale mam lepsze doświadczenia z R. Zastrzeżenie: Będąc studentem grad, nie używałem najnowszej wersji Matlaba dla moich bibliotek dll, Pracuję prawie wyłącznie w Matlab 7.1 (który ma 4 lata). Być może nowsze wersje działają lepiej, ale mogę sobie wyobrazić dwie sytuacje, w których dll C ++ z tyłu Matlaba spowodował niebieski ekran systemu Windows XP, ponieważ niewłaściwie wyszedłem poza granice tablicy - bardzo trudny problem debuguj, jeśli komputer uruchamia się ponownie za każdym razem, gdy popełnisz ten błąd ...
Wreszcie, społeczność R wydaje się rosnąć znacznie szybciej i z większym rozmachem niż społeczność Matlaba. Ponadto, ponieważ jest to bezpłatne, nie masz również do czynienia z menedżerem licencji Godforsaken flexlm.
Uwaga: prawie cały mój rozwój dotyczy obecnie algorytmów MCMC. Robię około 90% produkcji w C ++ z wizualizacją w R przy użyciu ggplot2.
Aktualizacja równoległych komentarzy:
Spora część mojego obecnego czasu poświęcana jest na równoległe wykonywanie procedur MCMC (to moja praca doktorska). Użyłem równoległego zestawu narzędzi Matlaba i rozwiązania Star P (które, jak sądzę, jest teraz własnością Microsoftu? - jeez inny jest pożerany ...) Odkryłem, że równoległy zestaw narzędzi jest koszmarem konfiguracji - kiedy go użyłem, wymagało to dostępu do konta root do każdego węzła klienta. Myślę, że naprawili teraz ten mały „błąd”, ale wciąż jest bałagan. Uważam, że rozwiązanie * p jest eleganckie, ale często trudne do profilowania. Nie używałem kurtki , ale słyszałem dobre rzeczy. Nie korzystałem również z nowszych wersji równoległego zestawu narzędzi, które również obsługują obliczenia na GPU.
Nie mam praktycznie żadnego doświadczenia z równoległymi pakietami R.
Z mojego doświadczenia wynika, że kod równoległy musi występować na poziomie C ++, gdzie masz dokładniejszą kontrolę nad rozkładem zadań i alokacją pamięci / zasobów. Uważam, że jeśli próbujesz zrównoleglać programy na wysokim poziomie, często otrzymujesz tylko minimalne przyspieszenie, chyba że twój kod jest w sposób trywialny rozkładalny (zwany również atrapą równoległości). To powiedziawszy, możesz nawet uzyskać rozsądne przyspieszenia przy użyciu pojedynczej linii na poziomie C ++ przy użyciu OpenMP:
#pragma omp parallel for
Bardziej skomplikowane schematy mają krzywą uczenia się, ale naprawdę podoba mi się, dokąd zmierzają gpgpu. Począwszy od JSM w tym roku, kilka osób, z którymi rozmawiałem o rozwoju GPU w R, cytuje to jako „tylko palce u stóp w głębokim końcu”. Ale jak powiedziano, mam minimalne doświadczenie - do zmiany w najbliższej przyszłości.