Как R и Python дополняют друг друга в науке о данных?

54

Похоже, что во многих руководствах или руководствах описательная часть R и python сосуществуют как дополнительные компоненты процесса анализа. Однако на мой неподготовленный взгляд кажется, что оба языка делают одно и то же.

Поэтому мой вопрос: существуют ли действительно специализированные ниши для двух языков или это просто личное предпочтение - использовать один или другой?

BioHazZzZard
источник
2
Это действительно не похоже на дубликат этой темы. Речь идет не о том, как использовать Python для статистики, а о том, как Python может дополнять R (очевидно, R будет использоваться для статистического анализа).
gung - Восстановить Монику
4
R если бы вы были статистом 10 лет назад. Python, если вы хотите, чтобы ваш код где-то в производстве или использовать его повторно.
Джечлин
1
Связанный: datascience.stackexchange.com/questions/326
Юхо Коккала
3
В связи с популярностью этого q. & В ответ на запросы через флаги я снова открыл его, но сделал его CW.
Scortchi - Восстановить Монику
1
Большинство ответов часто забывают о том, что они сравнивают язык Python с реализацией GNU-R. R также имеет другие реализации (см. Renjin , написанный на Java, Microsoft R Open , который скомпилирован с Intel MKL, FastR , pqR и т. Д.). Они пытаются исправить некоторые проблемы с GNU-R, гораздо более консервативной реализацией. Кроме того, помните, что R не имеет формального определения.
Firebug

Ответы:

45

Они дополняют друг друга. Это правда, что оба могут делать одно и то же, но это можно сказать о большинстве языков. У каждого есть свои сильные и слабые стороны. Общая точка зрения заключается в том, что Python лучше всего подходит для сбора и подготовки данных, а также для текстового анализа. R считается лучшим для анализа данных, так как это в первую очередь статистический язык.

В R есть шведский стол с пакетами для всего, что только можно придумать, но его основным элементом является статистический анализ - от простого хи-квадрат до факторного анализа и моделей угроз - это просто и надежно. Некоторые из самых больших имен в статистике создают пакеты R, и у него есть живое сообщество, которое поможет вам в любой ситуации. ggplot2является стандартом в визуализации данных (графики и т. д.). R - векторизованный язык, созданный для эффективного прохождения данных. Он также хранит все данные в ОЗУ, которое является обоюдоострым мечом - он быстро работает с небольшими наборами данных (хотя некоторые могут поспорить со мной), но он не может хорошо обрабатывать большие данные (хотя у него есть пакеты, чтобы обойти это такой как ff).

Python значительно проще в изучении, чем R - особенно для тех, кто имеет опыт программирования. R просто ... странно. Python отлично справляется с поиском данных и является языком, который можно использовать для веб-поиска (причем с удивительным beautifulsoup). Python известен своей силой в разборе строк и манипулировании текстом. pandasэто отличная библиотека для манипулирования данными, слияния, преобразования и т. д., и она быстра (и, вероятно, вдохновлена ​​R).

Python великолепен, когда вам нужно немного программировать. Это не удивительно, поскольку это язык общего назначения. R, однако, со всеми его расширениями был построен статистиками для статистиков. Таким образом, хотя Python может быть проще, лучше и быстрее во многих приложениях, R станет платформой для статистического анализа.

Юваль Шпиглер
источник
13
Как человек, который знает оба, я согласен с этим; Там может быть много стилистических аргументов, но самое большое отличие состоит в том, что, как только пришло время фактически запустить причинно-следственные статистические модели, Python недостаточно развит. Пакет statsmodels дает вам некоторые основы, но не подходит для R, Stata или Sas. Одно известное исключение - это анализ стиля машинного обучения, для которого Scikitlearn Python хорошо подходит. Для всего остального я думаю, что можно привести веские аргументы в пользу того, что Python по крайней мере равен R и часто превосходит его. Изучение обоих ни в коем случае не является плохим использованием времени.
Джефф
2
Я согласен с большей частью этого - но хотел бы подчеркнуть проблемы больше - R не годится для больших наборов данных и не очень хорошо обрабатывает разреженные наборы данных (большинство библиотек не поддерживают это) (именно на этом многие выполняют машинное обучение) например, модели типа «мешок слов», где кардинальность факторной / категориальной переменной может быть в тысячах.
seanv507
10
Не начинать аргумент в потоке комментариев, но data.tableпакет в R специально предназначен для эффективной работы с большими наборами данных, а также для тонкой связи с распределенной обработкой.
яркая звезда
3
Если вы думаете, что Python лучше, чем R, при извлечении данных и разборе строк, то вы все время использовали R очень неправильно. То же самое относится к «R не подходит для больших наборов данных и не очень хорошо обрабатывает разреженные наборы данных (большинство библиотек не поддерживают это)» .
gented
3
добавление к ускорению Тревора data.table; Я также рад сказать, rvestчто это ОТЛИЧНЫЙ инструмент для обработки большинства задач по очистке, и его намного легче запустить и запустить, чемbeautifulsoup
MichaelChirico
21

Я попытаюсь сформулировать ответ, касающийся основных моментов, в которых эти два языка вступают в игру для науки о данных / статистики / анализа данных и тому подобного, как человек, который использует оба.

Рабочий процесс в анализе данных обычно состоит из следующих шагов:

  1. Извлечение данных из какого-либо источника (скорее всего, базы данных SQL / noSQL или файлов .csv).
  2. Разбор данных в приемлемом и разумном формате (фрейм данных), чтобы можно было выполнять операции и думать об этом.
  3. Применение некоторых функций к данным (группировка, удаление, объединение, переименование).
  4. Применение некоторой модели к данным (регрессия, кластеризация, нейронная сеть или любая другая более или менее сложная теория).
  5. Развертывание / представление ваших результатов более или менее технической аудитории.

Получение данных

99% времени, процесс извлечения данных сводится к тому, запрашивая какую - то базу данных SQL или Impala: как Python и R имеют конкретных клиентов или библиотеки , которые делают работу в кратчайшие сроки и одинаково хорошо ( RImpala, RmySQLдля R и MySQLdbдля Python работать плавно, добавить не особо). Когда дело доходит до чтения внешних файлов .csv, data.tableпакет для R предоставляет функцию, freadкоторая мгновенно считывает огромные и сложные файлы .csv с любой настраиваемой опцией синтаксического анализа и преобразует результат непосредственно во фреймы данных с именами столбцов и номерами строк.

Организация фреймов данных

Мы хотим, чтобы данные были сохранены в какой-то таблице, чтобы мы могли легко получить доступ к любой отдельной записи, строке или столбцу.

R пакет data.tableобеспечивает непревзойденные способы ярлыка, переименовывать, удалять и получить доступ к данным. Стандартный синтаксис очень похож на SQL, как dt[i, j, fun_by], где это должно быть dt[where_condition, select_column, grouped_by (or the like)]; Там же, как и в jпредложении, могут быть добавлены пользовательские пользовательские функции , так что вы можете совершенно свободно манипулировать данными и применять любую сложную или необычную функцию к группам или подмножествам (например, взять i-ю строку, k-ю). элемент и суммируйте его с (k-2) -ым элементом (i-1) -ой строки тогда и только тогда, когда стандартное отклонение всего столбца будет таким, как оно есть, сгруппированным по последнему столбцу в целом). Посмотрите на тесты и на этот другой удивительный вопрос о SO, Сортировка, удаление и переименование столбцов и строк выполняют то, что они должны делать, а стандартные векторизованные методы R apply, sapply, lapply, ifelseвыполняют векторизованные операции над столбцами и фреймами данных в целом, не просматривая каждый элемент (помните, что всякий раз, когда вы используете циклы в R, делаю это неправильно).

Оружие Python - это pandasбиблиотека. Наконец, он предоставляет структуру pd.DataFrame(которой нет в стандартном Python по неизвестной мне причине), которая обрабатывает данные такими, какие они есть, а именно кадрами данных (вместо некоторых numpy array, numpy list, numpy matrixили чего-то еще). Операции, такие как группирование, переименование, сортировка и т. П., Могут быть легко достигнуты, и здесь пользователь также может применить любую пользовательскую функцию к сгруппированному набору данных или подмножеству фрейма, используя Python applyили lambda. Мне лично не нравится грамматика df[df.iloc(...)]для доступа к записям, но это всего лишь личный вкус и никаких проблем. Тесты для операций группировки по-прежнему немного хуже, чем у R, data.tableно если вы не хотите сэкономить 0,02 секунды для компиляции, большой разницы в производительности нет.

Струны

R способ лечения строк заключается в использовании stringrпакет , который позволяет любой текст манипуляции, анаграмма, регулярное выражение, завершающие пробелы или подобное с легкостью. Его также можно использовать в сочетании с библиотеками JSON, которые распаковывают словари JSON и выводят список их элементов, так что у вас есть окончательный фрейм данных, в котором имена столбцов и элементы являются такими, какими они должны быть, без каких-либо символов, отличных от UTF8, или пробелов там.

Python's Pandas .str. выполняет ту же работу, играя с регулярными выражениями, трейлингом или иным образом, так же хорошо, как его конкурент, поэтому даже здесь нет большой разницы во вкусе.

Применение моделей

Вот где, на мой взгляд, возникают различия между двумя языками.

римеет на сегодняшний день непревзойденный набор библиотек, которые позволяют пользователю по существу делать все, что он хочет, в одну-две строки кода. Стандартные функциональные или полиномиальные регрессии выполняются в виде одной строки и дают выходные данные, коэффициенты которых легко читаются, сопровождаются соответствующими им доверительными интервалами и распределением p-значений. Аналогично для кластеризации, а также для моделей случайных лесов, также для дендограмм, анализа главных компонентов, разложения по сингулярным значениям, подбора логистики и многого другого. Вывод для каждого из вышеперечисленных, скорее всего, идет с определенным классом построения, который генерирует визуализации того, что вы только что сделали, с цветами и пузырьками для коэффициентов и параметров. Тесты гипотез, статистические тесты, Шапиро,

Python пытается идти в ногу с SciPyи scikit-learn. Большая часть стандартного анализа и моделей также доступны, но они немного длиннее для написания кода и менее интуитивно понятны (на мой взгляд). Более сложные механизмы отсутствуют, хотя некоторые из них можно проследить до некоторых комбинаций уже существующих библиотек. Одна вещь, которую я предпочитаю делать в Python, а не в R, - это анализ текста с использованием би-граммов, триграмм и более высоких порядков.

Представлять результаты

Оба языка имеют прекрасные инструменты построения графиков, ggplot2прежде всего R и соответствующий эквивалент Python. На самом деле не так уж много, чтобы конкурировать, они делают свою работу в целости и сохранности, хотя я считаю, что если вы представляете результаты, вам, возможно, придется использовать другие инструменты - там есть причудливые красочные инструменты дизайна, и ни Python, ни R не предназначены для того, чтобы удивить аудитория с модным красно-зеленым перетаскиванием. В последнее время R опубликовала множество улучшений своих shiny appфункций, которые в основном позволяют создавать интерактивные результаты . Я никогда не хотел изучать это, но я знаю, что это там, и люди используют это хорошо.


Примечание

В качестве дополнительного примечания я хотел бы подчеркнуть, что основное различие между этими двумя языками заключается в том, что Python является языком программирования общего назначения, созданным и предназначенным для информатики, переносимости, развертывания и т. Д. И т. Д. Он удивителен тем, что он делает, и его легко узнать; нет никого, кто не любит питона. Но это язык программирования для программирования.

рс другой стороны, был изобретен математиками, физиками, статистиками и специалистами по данным и для них. Если вы пришли из этого фона, все имеет смысл, потому что он идеально отражает и воспроизводит понятия, используемые в статистике и математике. Но если вместо этого вы пришли из области компьютерных наук и хотите имитировать Java или C в R, вы будете разочарованы; у него нет «объектов» в стандартном смысле (ну, он есть, но не то, что обычно думают, что они ...), у него нет классов в стандартном смысле (ну, у него есть, но не то, что обычно думает, что они ...), у него нет «указателей» или всех других структур информатики - но только потому, что они им не нужны. Последний по порядку, но не по значимости: документацию и пакеты легко создавать и читать (если вы используете Rstudio); существует большое и страстное сообщество, и Google буквально за пять секунд "как сделать вставку-случайную проблему в R", чья первая запись перенаправляет вас на решение проблемы (сделанное кем-то другим) с соответствующим кодом , моментально.

Большинство промышленных компаний имеют свою инфраструктуру, построенную на Python (или дружественной к Python среде), которая позволяет легко интегрировать код Python ( import myAnalysisгде угодно, и вы в основном сделали). Однако любая современная технология, сервер или платформа легко запускает фоновый R-код без каких-либо проблем.

Gennaro Tedesco
источник
8
+6, это очень хороший ответ: подробный, точный и сбалансированный.
gung - Восстановить Монику
+1 Лучший ответ здесь. Забавно, я пришел в R с Java (хотя и не по прямому маршруту), и мне это очень понравилось. Я не обязательно думаю, что выполнение циклов в R означает, что вы делаете это неправильно. Я поймал себя на том, что ломаю голову, пытаясь иногда обходить циклы, но не могу найти обходного пути (например, создание новых значений переменных в наборе данных на основе условий предыдущих строк и выборка данных из вторичных наборов данных).
Юваль Шпиглер
Если бы только это множество пакетов R для выполнения чего-либо под солнцем было написано людьми, которые знают, как делать статистические вычисления / пишут надежное и надежное программное обеспечение для численного математического анализа / знают численный анализ и т. Д. Некоторые из пакетов R очень хороши. Очень большое количество пакетов R, даже некоторые из которых написаны известными авторами, являются полным мусором - и многие пользователи даже не осознают, что получают мусор. О, это в CRAN, это должно быть хорошо, или, по крайней мере, правильно, или надежно ... НЕПРАВИЛЬНО !!!!!
Марк Л. Стоун
«На сегодняшний день R обладает непревзойденным набором библиотек, которые позволяют пользователю по существу делать все, что он хочет, в одну-две строки кода». Я согласен на 100%, если только пользователь не получит правильный ответ.
Марк Л. Стоун
8
@ MarkL.Stone Не могли бы вы представить пример стандартных пакетов, написанных известными пользователями, которые дают неверные результаты?
gented
15
  • Python - это общий язык программирования, поэтому он полезен для выполнения многих других задач в дополнение к анализу данных. Например, если мы хотим автоматизировать выполнение нашей модели на производственном сервере, то Python - действительно хороший выбор. Другие примеры включают подключение к оборудованию / датчикам для чтения данных, взаимодействие с базами данных (реляционные или неструктурированные данные, такие как JSON), анализ данных, сетевое программирование (TCP / IP), графический интерфейс пользователя, взаимодействие с оболочкой и т. Д. (Ну, Зачем ученому, работающему с данными, хотеть выполнять так много таких задач, которые имеют мало общего с прогностическими моделями? Я думаю, что у людей разные определения Что такое ученый, работающий с данными?В некоторых организациях анализ данных и проведение описательного анализа с помощью панели мониторинга достаточно хороши для бизнеса, а данные недостаточно зрелы для выполнения прогнозных моделей. С другой стороны, во многих небольших компаниях люди могут ожидать, что ученые, занимающиеся данными, займутся разработкой программного обеспечения. Знание Python сделает вас независимым от других разработчиков программного обеспечения.)

  • R имеет много статистических пакетов, которые намного лучше, чем python или MATLAB. Используя R, можно реально мыслить на уровне модели, а не на уровне детализации реализации. Это огромное преимущество при разработке статистических моделей. Например, многие люди вручную внедряют нейронные сети в python; выполнение такой работы может не помочь понять, почему нейронные сети работают, а просто следовать рецепту, чтобы дублировать работу других, чтобы проверить, работает ли она. Если мы работаем в R, мы можем легко сосредоточиться на математике за моделью, а не на деталях реализации.

Во многих случаях люди используют их вместе. Построение программного обеспечения легко в Python, а построение моделей лучше в R. Если мы хотим представить модель в производстве, но не на бумаге, нам могут понадобиться оба варианта. Если в вашей компании много инженеров-программистов, вам может потребоваться больше R. А если в вашей компании много ученых-исследователей, вам может понадобиться больше python.

hxd1011
источник
2
Хороший ответ, но вы написали «Jason» вместо «JSON», и это меня расстроило
пар
На самом деле я не являюсь членом сообщества статистиков или "машинного обучения", но я думаю, что наличие расширенных пакетов зависит от сообщества. Я могу поверить, что многие новые и современные статистические методы поставляются с R-кодом. Но когда я вижу документы о компьютерном зрении / машинном обучении / нейронных сетях, которые поставляются с кодами («высокого уровня») ... они кажутся Matlab или python.
GeoMatt22
1
+1 за обсуждение того, как языки влияют на образ мыслей. Огромное преимущество R заключается в том, что он построен статистиками для статистиков и позволяет стимулировать мышление с точки зрения моделирования. Раскрытие информации: я свободно говорю на R, но только на Python.
Эш
Хм ... а что scikit-learn? scikit-learn.org/stable
военный корабль
10

Программисты всех мастей недооценивают, насколько выбор языка является культурным . Веб-разработчики, такие как Node.js. Ученым нравится Питон. Как инженер-программист полиглота, который в равной степени может справиться с текучестью Javascript и жесткостью Java, я понял, что нет никакой внутренней причины, по которой эти языки плохи в работе друг друга - просто огромное количество пакетов, документации, сообществ, книг, и т.д., окружающих их.

(По внутренним причинам один случайный язык лучше, чем какой-либо другой, см. Предстоящие комментарии к этому ответу.)

Мой личный прогноз заключается в том, что Python - это путь в будущее, потому что он может делать все, что может R, или, точнее, достаточно того, что R может сделать, что специальные программисты работают над заполнением пробелов, и является гораздо лучшим языком разработки программного обеспечения. Программная инженерия - это дисциплина, которая занимается:

  • достаточно доверять надежности вашего кода, чтобы запустить его в производство (так что любая модель машинного обучения, которая обслуживает пользователей в режиме реального времени)
  • обеспечение того, чтобы ваш код мог продолжать работать, так как он подвергается модификации и повторному использованию (например, инфраструктура модульного тестирования)
  • сосредоточиться на удобочитаемости, на благо других и себя всего за 6 месяцев
  • Глубокий упор на организацию кода для простоты создания версий, возврата к предыдущим рабочим версиям и одновременной разработки несколькими сторонами
  • Я предпочитаю инструменты и технологии с лучшей документацией и, в идеале, с тем свойством, что они не будут работать вообще, если вы не используете их правильно (это был мой самый большой недостаток в Matlab - я задаю вопрос Google, и я должен прочитать их довольно ужасные форумы ищу ответ)

Плюс, откровенно говоря, Python легче учиться.

Ученые и статистики поймут, что они являются заинтересованными сторонами в хорошей практике разработки программного обеспечения, а не независимой и беспристрастной профессией. Просто мое мнение, но статьи, доказывающие хрупкость академического кодекса, поддержат это.

Этот ответ полностью соответствует моему мнению, но вы задали очень самоуверенный вопрос, и, поскольку он был хорошо принят, я чувствовал, что вы заслуживаете в ответ непритязательного, достаточно обоснованного (я надеюсь!) Мнения. Существует серьезный аргумент в пользу Python по поводу R, и я бы упустил попытку опубликовать беспартийный ответ, когда реальность сама может быть партизанской.

djechlin
источник
Разве Джулия, когда она вырастет, не станет лучшей альтернативой, чем Python?
kjetil b halvorsen
1
@kjetilbhalvorsen «когда он вырастет» - это скорее «если», очень трудно вытеснить устоявшийся язык, и это в основном личный выбор, хотите ли вы использовать передовые технологии, рискуя их никогда не принять твердо. ИМО, Python сейчас набирает обороты. Я не очень знаком с Джулией, хотя это довольно общее мнение.
Джечлин
1
За исключением первого пункта, я не вижу, как Python по своей сути превосходит другие четыре пункта.
Firebug
4
«Python может делать все, что может R» - ложь. «Достаточно того, на что способны R, которые посвященные программисты работают, чтобы заполнить пробелы», ну, это было бы правдой для всего в мире - все можно сделать, чтобы сделать что-нибудь, пока кто-то работает над этим.
gented
2
@djechlin Совсем нет. Ваш пример надежности был «так что любая модель машинного обучения, которая обслуживает пользователей в режиме реального времени». Python лучше в этом, потому что он поддерживает развертывание намного легче, чем R, и только это. Модульное тестирование, удобочитаемость, организация и документация не являются неотъемлемыми качествами. Вы можете реализовать свои собственные тесты, упростить чтение кода, упорядочить его, а документацию на R действительно легко понять.
Firebug
8

Я пользователь R, но я думаю, что Python - это будущее (я не думаю, что это синтаксис)

Python - это будущее
Преимущество Python состоит в том, что другие люди уже упоминали о гораздо более широкой поддержке и, для программистов, более логичном синтаксисе.
Кроме того, возможность, с помощью которой вы можете преобразовать результаты анализа в производственную систему, гораздо проще.
Возможно, это из-за того, что Python является универсальным, а R - нет, но даже я поднимаю брови, когда вижу производимый R-конвейер.
Но не только это, даже для продвинутых приложений Python быстро догоняет (Scikit-learn, PyBrain, Tensorflow и т. Д.), И хотя R по-прежнему является языком общения в академических кругах по внедрению статистических методов, Python добился огромных успехов в профессиональном секторе благодаря Появление передовых специализированных библиотек.

Но R - не плохо.
Многие люди, похоже, любят прыгать в «R с плохим синтаксисом».
Я хотел бы предложить синтаксис R, чтобы быть хорошим!
Функции назначения, отложенная оценка, нестандартная оценка и формулы являются огромными преимуществами при использовании R.
Это просто экономит столько времени, что вам не нужно беспокоиться об экранировании имен переменных, на которые есть ссылки в вашем резюме, или о том, как построить логику того, что моделируется на основе чего или просматривая имена с помощью, names()а затем присваивая новые имена, добавляя <- c("A", "B", "C").
Когда люди жалуются на странный синтаксис R, они рассматривают его как язык программирования, а не как инструмент для обработки данных.
Как кто-то из R и любящий dplyr, я нахожу синтаксис панд немного неуклюжим по сравнению.
Да, это немного более гибко, но для большинства задач вам требуется гораздо больше нажатий клавиш для выполнения простой команды, чем в R, которые просто используются для удовлетворения синтаксического анализатора Python, а не для выражения вашей идеи.

Подводя итоги
Конечно, разумно знать и то, и другое, и в то время как Python делает это, выбор дизайна R для конкретного домена просто упрощает его для специальной работы. Огромный недостаток R заключается в том, что трудно покинуть его домен, что вам, в основном, необходимо сделать, как только вы попытаетесь реализовать свои выводы на устойчивой основе.

Робин Гертенбах
источник
4

Если вы смотрите на R как на статистический инструмент, а не на язык программирования, это действительно здорово. Он обладает гораздо большей гибкостью, чем Stata или SPSS, но также может делать все, что может. Я изучал Stata во время учебы в колледже, и на R было достаточно легко смотреть, потому что у меня уже была перспектива статистического инструмента, а не опыт чистого языка программирования, который могли бы иметь другие.

Я думаю, что разочарование в R начинает играть, когда программисты пытаются учиться и понимать R; но это отличный инструмент для тех, кто приходит в R через статистический фон.

Python великолепен, если вы уже отличный программист; но для меня как для новичка в программировании и статистике только после окончания колледжа R был гораздо лучшим выбором. Это действительно просто предпочтение, которое соответствует вашему набору навыков и интересует больше.

JBeazer
источник
3

Добавление к некоторым из предыдущих ответов:

По моему опыту, нет ничего проще, чем использовать dplyr + tidyr, ggplot и Rmarkdown от R для получения необработанных данных и представления результатов. Python предлагает много, и я использую его все больше и больше, но мне, безусловно, нравится, как пакеты Хэдли связываются вместе.

BStange
источник
2

Python широко применяется за пределами науки, поэтому вы извлекаете из этого пользу. Как указывает «Angry Guide to R», R был разработан сообществом, в котором были первоочередные разработчики программного обеспечения.

Я бы сказал, что сегодня R обладает двумя основными преимуществами: некоторые действительно зрелые узкоспециализированные пакеты в некоторых областях и современный воспроизводимый исследовательский пакет knitr.

Кажется, Python лучше подходит для всего остального.

Это мнение конечно, так как почти все в этой теме. Я немного удивлен, что эта нить еще жива.

Гена Кукарцев
источник
2

Как описано в других ответах, Python является хорошим языком программирования общего назначения, в то время как R имеет серьезные недостатки в качестве языка программирования, но имеет более богатый набор библиотек анализа данных. В последние годы Python догоняет R с разработкой зрелых библиотек анализа данных, таких как scikit-learn, тогда как R никогда не будет исправлен. На практике я использую Python (на самом деле, Hy ) почти для всего и обращаюсь к R только для относительно эзотерических методов, таких как квантильная регрессия (реализация которых в statsmodels Python, похоже, нарушена). Есть несколько способов вызова R из Python; PypeR достаточно прост, чтобы я мог работать в таких агрессивных средах, как сервер Windows.

Изменить : Я призываю всех, кто хотел бы обсудить это дальше, поговорить с авторами связанного эссе, а не комментировать этот ответ.

Kodiologist
источник
8
Этот путеводитель является самой бессмысленной критикой, которую я когда-либо читал о R (и я читал много).
Firebug
10
«Документация безумно плоха», это бессмысленно. R сила - это простота для непрограммистов и обширная документация. «Потому что даже имя R глупо, действительно сложно найти полезные вещи в Google R. Извините. Добро пожаловать в R!», Это не имеет смысла. Я никогда не сталкивался с какими-либо проблемами, пытаясь найти документацию для самых непонятных пакетов. «Вы переименовываете колонки, жутко, присваивая имена (фрейм). Знаете ли вы, как и почему это работает? Пожалуйста, обучите меня.», Давай, он даже не пытается.
Firebug
8
Как R труднее гуглить, чем C? Гугл умный. Он узнает, что вы интересуетесь языком программирования R. R в основном критикуют люди с опытом работы с другими языками программирования. Извините, но он не был разработан как альтернатива этим языкам. Он был разработан для и статистиками. В результате, некоторые дизайнерские решения были неоптимальными, но сказать, что есть серьезные недостатки, довольно сложно. У каждого языка программирования есть свои сильные и слабые стороны.
Роланд
5
Создать пакет на самом деле очень просто. Это только усложняется, если вы придерживаетесь правил (справедливо), применяемых CRAN. Вы можете импортировать выборочно из пакетов, если вы создаете пакет. Переработка векторов на самом деле является сильной стороной Нет никаких противоречий между списком подмножеств и векторами. Некоторые из остальных действительно можно считать недостатками.
Роланд
6
У R явно есть бородавки, некоторые из непростительных "wat" разновидностей (stringsAsFactors). Но у него также есть статистические библиотеки, которые не имеют параллелей, даже удаленно, ни на каком другом языке. Программирование, необходимое для создания этих библиотек, является более серьезным, чем когда-либо подавляющему большинству из нас. Как общее утверждение, «R не серьезный язык» находится где-то между невежественным, безнадежно местечковым, неграмотным и кислым виноградом. И я говорю это как кто-то, кто хочет, чтобы R был в основном Python с библиотеками R.
Пол