Я использую оба. Я часто создаю прототипы функций и алгоритмов в Matlab, потому что, как уже говорилось, легче выразить алгоритм в чем-то, что близко к чисто математическому языку.
У R есть отличные библиотеки. Я все еще учусь этому, но я начинаю оставлять Matlab в пыли, потому что, когда вы знаете R, там также довольно легко создавать прототипы функций.
Однако я считаю, что если вы хотите, чтобы алгоритмы эффективно функционировали в производственной среде, лучше всего перейти на скомпилированный язык, такой как C ++. У меня есть опыт работы с C ++ как в Matlab, так и в R (и в этом смысле превосходно), но у меня был лучший опыт с R. Отказ от ответственности: Будучи аспирантом, я не использовал последнюю версию Matlab для своих библиотек, Я работаю почти исключительно в Matlab 7.1 (ему 4 года). Возможно, более новые версии работают лучше, но я могу вспомнить две ситуации, когда DLL-библиотека C ++ в задней части Matlab вызвала появление Windows XP с синим экраном, потому что я неуместно вышел за границы массива - очень трудная проблема для отладка, если ваш компьютер перезагружается каждый раз, когда вы делаете эту ошибку ...
Наконец, сообщество R, похоже, растет гораздо быстрее и с гораздо большей динамикой, чем когда-либо было сообщество Matlab. Кроме того, поскольку это бесплатно, вы также не имеете дела с менеджером лицензий Godforsaken flexlm.
Примечание: почти все мои разработки сейчас связаны с алгоритмами MCMC. Я делаю около 90% в производстве в C ++ с визуализацией в R с использованием ggplot2.
Обновление для параллельных комментариев:
Сейчас я потратил немало времени на параллелизацию процедур MCMC (это моя кандидатская диссертация). Я использовал параллельный инструментарий Matlab и решение Star P (которое, я полагаю, теперь принадлежит Microsoft ?? - еще один сожрал ...) Я обнаружил, что параллельный инструментарий - это кошмар конфигурации - когда я его использовал, это требовало корневого доступа к каждому клиентскому узлу. Я думаю, что они исправили эту маленькую «ошибку» сейчас, но все еще беспорядок. Я нашел решение * 'p элегантным, но часто сложным для профилирования. Я не использовал куртку , но слышал хорошие вещи. Я также не использовал более поздние версии параллельного инструментария, которые также поддерживают вычисления на GPU.
У меня практически нет опыта работы с параллельными пакетами R.
По моему опыту, распараллеливание кода должно происходить на уровне C ++, где у вас есть более тонкая гранулярность контроля для декомпозиции задач и распределения памяти / ресурсов. Я считаю, что если вы пытаетесь распараллелить программы на высоком уровне, вы часто получаете только минимальное ускорение, если ваш код не является тривиально разложимым (также называемым фиктивным параллелизмом). Тем не менее, вы можете даже получить разумное ускорение, используя одну строку на уровне C ++, используя OpenMP:
#pragma omp parallel for
У более сложных схем есть кривая обучения, но мне действительно нравится, куда идут дела в gpgpu. Что касается JSM в этом году, несколько человек, с которыми я говорил о разработке графических процессоров в R, называют это, так сказать, всего лишь «пальцами в глубине». Но, как указано, у меня минимальный опыт - поменять в ближайшее время.