Як R і Python доповнюють один одного в науці даних?


54

У багатьох навчальних посібниках чи посібниках начебто випливає, що R та пітон співіснують як доповнюючі компоненти процесу аналізу. Однак на моє непідготовлене око здається, що обидві мови роблять те саме.

Тож моє питання полягає в тому, чи існують справді спеціалізовані ніші для двох мов чи це лише особисті переваги, чи використовувати одну чи іншу?


2
Це насправді не схоже на дублікат цього потоку. Йдеться не про те, як використовувати Python для статистики, це про те, як Python може доповнювати R (очевидно, R буде використовуватися для статистичного аналізу).
gung - Відновіть Моніку

4
R, якщо ви були статистиком 10 років тому. Python, якщо ви хочете десь поставити свій код у виробництво або використовувати його повторно.
djechlin


3
Завдяки популярності цього питання, і у відповідь на запити через прапори я знову відкрив його, але зробив 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 недостатньо розвинений. Пакет статистичних моделей дає вам основи, але не підходить до R, Stata чи Sas. Одним з помітних винятків є аналіз стилю машинного навчання, для якого Python's scikitlearn добре відповідає. З усього іншого, я думаю, що можна зробити хороші аргументи про те, що Python принаймні дорівнює R і часто перевершує. Навчання обом аж ніяк не є поганим використанням часу.
Джефф

2
Я погоджуюсь з більшістю цього - але наголошую на питаннях більше - R не підходить для великих наборів даних і не обробляє розріджені набори даних (більшість бібліотек не підтримують його) дуже добре (що саме багато хто виконує машинне навчання) наприклад, моделі «мішок слів», де кардинальність коефіцієнта / категоріальної змінної може бути в 1000-х.
seanv507

10
Не запускати аргумент у потоці коментарів, але data.tableпакет на R спеціально призначений для ефективної роботи над великими наборами даних та підключає до розподіленої обробки.
яскрава зірка

3
Якщо ви вважаєте, що Python кращий за R при пошуку даних та розборі рядків, то ви весь час використовували R дуже неправильно. Те ж саме стосується "R не підходить для великих наборів даних і не обробляє розріджені набори даних (більшість бібліотек не підтримують його) дуже добре" .
покладено

3
додавання Тревору підсилення data.table; Я також радий сказати rvest, що це чудовий інструмент для вирішення більшості завдань, що beautifulsoup
вичісують

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 там.

Pyndhon's Pandas .str. виконує таку ж роботу, граючи з регулярними виразами, затягуючи або що-небудь таке добре, як і його конкурента, тому навіть тут немає великої різниці у смаку.

Застосування моделей

Ось де, на мою думку, виникають відмінності між двома мовами.

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

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

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

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


Бічна примітка

Як бічне зауваження, я хотів би підкреслити, що основна відмінність між двома мовами полягає в тому, що Python - це мовна програма програмування загального призначення, створена і для інформатики, переносимості, розгортання тощо тощо. Це дивовижно в тому, що він робить, і навчитися просто; немає нікого, хто не любить пітона. Але програмування - це мова програмування.

Rз іншого боку, був винайдений математиками, фізиками, статистиками та науковцями даних. Якщо ви походите з цього фону, все має ідеальний сенс, оскільки воно прекрасно відображає та відтворює поняття, які використовуються у статистиці та математиці. Але якщо натомість ви походите з інформатики та хочете імітувати Java або C в R, ви будете розчаровані; у нього немає "об'єктів" у стандартному розумінні (ну, це є, але не те, що, як правило, хтось вважає, що вони є ...), у нього немає класів у стандартному розумінні (ну, це є, але не те, що зазвичай вважає, що вони є ...), він не має "покажчиків" чи всіх інших структур інформатики - а лише тому, що їм не потрібен. Останнє, але не найменш важливе: документацію та пакети легко створювати та читати (якщо ви використовуєте Rstudio); там є велика і пристрасна спільнота, і Google займає буквально п’ять секунд, як "як зробити вставку-випадкову проблему в R", перший запис якої перенаправляє вас до вирішення проблеми (зроблено кимось іншим) з відповідним кодом , моментально.

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


8
+6, це дуже хороша відповідь: детальна, точна та врівноважена.
gung - Відновіть Моніку

+1 Найкраща відповідь тут. Це смішно, я приїхав до R з Java (хоч і не прямим маршрутом), і мені це дуже подобалося. Я не обов'язково думаю, що робити петлі в R означає, що ви робите це неправильно. Я виявив, що чухає голову, намагаючись іноді обійти за допомогою циклів, але не міг знайти шлях (наприклад, створити нові змінні значення в наборі даних на основі умов попередніх рядків та отримання даних із вторинних наборів даних).
Юваль Шпіглер

Якби тільки ця кількість пакетів R, щоб зробити що-небудь під сонцем, всі були написані людьми, які знають, як робити статистичні обчислення / писати надійне та надійне числове математичне програмне забезпечення / знають чисельний аналіз тощо. Деякі з пакетів R дуже хороші. Дуже велика кількість пакетів R, навіть деякі, написані відомими авторами, є загальним сміттям - і багато користувачів навіть не розуміють, що отримують сміття. О, це в CRAN, він повинен бути хорошим, або, принаймні, правильним, або надійним ... НЕПРАВНО !!!!!
Марк Л. Стоун

"На сьогоднішній день R має неперевершений набір бібліотек, які дозволяють користувачеві по суті робити все, що завгодно, в одному-двох рядках коду." Я погоджуюсь на 100%, якщо отримання правильної відповіді не є однією з речей, яку хоче користувач.
Марк Л. Стоун

8
@ MarkL.Stone Чи не заперечуєте ви представити приклад стандартних пакетів, написаних відомими користувачами, які дають неправильні результати?
покладено

15
  • Python - це загальна мова програмування, тому крім аналізу даних добре виконувати багато інших завдань. Наприклад, якщо ми хочемо автоматизувати виконання нашої моделі на виробничому сервері, то python - це дійсно вдалий вибір. Інші приклади включають підключення до апаратних засобів / датчиків для зчитування даних, взаємодію з базами даних (реляційні або неструктуровані дані, такі як JSON), аналіз даних, мережеве програмування (TCP / IP), графічний інтерфейс користувача, взаємодію з оболонкою тощо (ну, Чому б науковець з питань даних хотів би виконати стільки подібних завдань, які мають мало спільного з прогнозними моделями? Я думаю, люди мають різні визначення Що таке вчений?У деяких організаціях аналіз даних та аналіз описового аналізу за допомогою інформаційної панелі достатньо хороший для бізнесу, а дані недостатньо зрілі для того, щоб робити прогнозні моделі. З іншого боку, у багатьох малих компаніях люди можуть очікувати, що науковці даних будуть робити багато програмної інженерії. Знання python зробить вас незалежним від інших інженерів програмного забезпечення.)

  • R має багато статистичних пакетів, які набагато краще, ніж python або MATLAB. Використовуючи R, можна реально подумати на рівні моделі замість рівня деталізації реалізації. Це величезна перевага при розробці статистичних моделей. Наприклад, багато людей вручну реалізують нейронні мережі в пітоні; виконання такої роботи може не допомогти зрозуміти, чому працюють нейронні мережі, але просто слідуючи рецепту, щоб дублювати роботу інших, щоб перевірити, чи працює вона. Якщо ми працюємо в R, ми можемо легко зосередитись на математиці, що стоїть за моделлю, а не на деталях реалізації.

У багатьох випадках люди використовують їх разом. Побудову програмного забезпечення легко зробити в python, а побудувати моделі краще в R. Якщо ми хочемо поставити модель у виробництво, але не на папері, нам може знадобитися і те, і інше. Якщо у вашій компанії є багато інженерів програмного забезпечення, вам може знадобитися більше Р. І якщо у вашій компанії багато науковців, що знаходяться в галузі досліджень, вам може знадобитися більше пітона.


2
Хороший відповідь , але ви написали «Джейсон» замість «JSON», навіть дати мені хороший смішок
пар

Я насправді не є членом ні спільнот статистики, ні «машинного навчання», але я вважаю, що доступність розширених пакетів дещо специфічна для спільноти. Я можу повірити, що багато нових та найсучасніших статистичних методів мають код R. Але коли я бачу комп'ютерне бачення / машинне навчання / нейронні чисті папери, які поставляються з ("високим рівнем") кодами ... вони здаються Matlab або python.
GeoMatt22

1
+1, щоб обговорити, як мови впливають на те, як мислять. Масовою перевагою R є те, що він побудований статистиками для статистиків, як він заохочує мислення з точки зору моделювання. Розкриття: Я вільно володію R, але дивлюсь лише на Python.
Еш


10

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

(З внутрішніх причин одна випадкова мова краща, ніж інша мова, дивіться наступні коментарі до цієї відповіді.)

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

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

Плюс відверто, Python простіше вивчити.

Вчені та статистики зрозуміють, що вони є зацікавленими сторонами хорошої інженерної практики в галузі програмного забезпечення, а не незалежною та непрофесійною професією. Лише моя думка, але документи, що підтверджують крихкість академічного кодексу, це підтвердять.

Ця відповідь є моєю думкою - але ви задали дуже впевнене запитання, і, оскільки це добре прийнято до цього часу, я вважав, що ви заслужили невибагливу, розумно поінформовану (сподіваюся!) Думку у відповідь. Існує серйозний аргумент для Python над R через усі рамки, і мені буде дозволено намагатися розмістити безпартійну відповідь, коли реальність сама по собі може бути партизанською.


Невже Юлія, коли виросте, буде кращою альтернативою, ніж Python?
kjetil b halvorsen

1
@kjetilbhalvorsen "коли вона виростає" - це більше "якщо", то дуже важко витіснити усталену мову, і це, головним чином, особистий вибір, чи хочете ви бути прикордонними технологіями, ризикуючи, що вони ніколи не будуть твердо прийняті. IMO, Python зараз має силу. Я не дуже знайомий з Джулією, хоча це досить загальна думка.
djechlin

1
За винятком першої кулі, я не бачу, як Python за своєю суттю перевершує жоден з інших чотирьох пунктів.
Firebug

4
"Python може робити все, що може" - помилково. "достатньо того, що може R, щоб спеціальні програмісти працювали, щоб заповнити прогалини" добре, це було б правдою для будь-якого світу - все, що можна зробити, робити що завгодно, поки хтось працює над цим.
покладено

2
@djechlin Всього ні. Вашим прикладом надійності була «тому будь-яка модель машинного навчання, яка обслуговує користувачів у режимі реального часу». Python краще в цьому, оскільки він підтримує розгортання набагато простіше, ніж R, і тільки це. Тестування, читабельність, організація та документація не є властивими якостям. Ви можете впроваджувати власні тести, полегшувати читання коду, впорядковувати його, а документацію на R дуже легко зрозуміти.
Firebug

8

Я користувач R, але думаю, що Python - це майбутнє (я не думаю, що це синтаксис)

Python - це майбутнє
Користь Python полягає в тому, що інші люди вже згадували про набагато ширшу підтримку, а для програмістів - більш логічний синтаксис.
Можливість того, що ви можете перевести отримані результати з свого аналізу у виробничу систему, набагато простіша.
Можливо, це тому, що Python є загальним призначенням, а R - ні, але навіть я піднімаю брови, коли бачу виробничий трубопровід R.
Але мало того, що навіть для розширених програм Python швидко наздоганяє (Scikit-learn, PyBrain, Tensorflow тощо), і поки R все ще є лінгва-франкою в науковцях щодо того, як застосовувати статистичні методи, Python отримав величезну силу в професійному секторі завдяки поява передових спеціалізованих бібліотек.

Але 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 був набагато кращим вибором. Це дійсно лише перевагу того, хто з них відповідає вашому набору навичок і більше цікавить.


3

Додавання до деяких попередніх відповідей:

На мій досвід, немає нічого простішого, ніж використовувати dplyr + tyr, Rgdown і Rmarkdown R для отримання від необроблених даних до презентабельних результатів. Python пропонує багато, і я все більше і більше використовую, але я впевнений, що люблю те, як пакунки Хедлі поєднують між собою.


2

Python має широке прийняття поза наукою, тому ви отримуєте користь від усього цього. Як вказує "Сердитий посібник по R", R була розроблена спільнотою, яка до першого порядку мала нульових розробників програмного забезпечення.

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

Здається, Python краще підходить для всього іншого.

Це думка звичайно, як майже все в цій темі. Я якось вражений, що ця нитка ще жива.


2

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

Редагувати : Я закликаю всіх, хто хотів би пізніше сперечатися з цим питанням, поговорити з авторами пов’язаного есе, а не коментувати цю відповідь.


8
Цей посібник aRrgh - це найяскравіша критика, яку я коли-небудь читав про R (і я багато читав).
Firebug

10
"Документація непристойно погана", це незрозуміло. Міцність R - це його простота для непрограмістів, і велика документація. "Оскільки навіть ім'я R дурне, дуже важко гуляти речі R корисним способом. Вибачте. Ласкаво просимо в R!", Це незрозуміло. Я ніколи не стикався з жодною проблемою, намагаючись знайти документацію до найбільш незрозумілих пакетів навколо. "Ви перейменовуєте стовпчики, моторошно, присвоюючи імена (кадр). Чи знаєте ви, як і чому це працює? Будь ласка, навчіть мене."
Firebug

8
Як R важче в google, ніж на C? Google розумний. Дізнається, що вас цікавить мова програмування R. R в основному піддається критиці людям, що мають досвід інших мов програмування. Вибачте, але це не було розроблено як альтернативу цим мовам. Його розробили для та статистики. Як результат, деякі дизайнерські рішення не були оптимальними, але сказати, що є серйозні недоліки, є трохи сильним. Кожна мова програмування отримала свої сильні та слабкі сторони.
Роланд

5
Створити пакет насправді дуже просто. Це ускладнюється лише в тому випадку, якщо ви дотримуєтесь правил (правильно), що застосовуються CRAN. Ви можете імпортувати вибірково з пакетів, якщо створюєте пакет. Переробка вектора насправді є силою. Немає невідповідностей між підмножиною списку та векторами. Деякі з решти дійсно можна вважати вадами.
Роланд

6
R явно має бородавки, деякі з невиправданого сорту «ват» (stringsAsFactors). Але він також має статистичні бібліотеки, які не мають паралельної, навіть віддаленої, жодної іншої мови. Програмування, необхідне для створення цих бібліотек, є більш серйозним, ніж коли-небудь нам доведеться робити. Як наголошене твердження, "R не є серйозною мовою" десь між неосвіченим, безнадійно парохіальним, неграмотним і кислим виноградом. І я говорю це як хтось, хто бажає, щоб R в основному був Python з бібліотеками R.
Пол
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.