Czy kod R jest produkcyjny (wdrożony)?

25

Przeczytałem wiele artykułów, które mówią o firmach takich jak Google, Facebook i wielu innych używających R. do badań. Innym scenariuszem, o którym czytałem, są firmy używające R do prototypowania rozwiązania analitycznego, a następnie ponownego wdrożenia go w innym języku.

Próbuję znaleźć literaturę na temat firm używających języka R do rzeczywistego kodu analizy produkcji. Przypadek użycia może być systemem rekomendującym, z którym użytkownik wchodzi w interakcje za pośrednictwem strony internetowej, która otrzymuje odpowiedź ze skryptu R wykonanego na zdalnym serwerze. Fakt, że mam problem ze znalezieniem takich raportów, powoduje, że zastanawiam się, czy nie jest to wskazane. Jeśli tak to dlaczego?

droby
źródło
1
To dobre pytanie. Mam przeczucie, ale nie wiem wystarczająco dużo, aby odpowiedzieć na to pytanie. Podejrzewam, że ponieważ R jest dystrybuowany na licencji GPL, wszelkie pochodne produkty, które go używają, muszą być również bezpłatne i open source. Może to oznaczać, że firmy chcące zarobić na oprogramowaniu dla przedsiębiorstw odejdą od R, ponieważ nie będą w stanie sprzedać produktu.
gregmacfarlane
3
Tylko jeśli twój zysk opiera się na sprzedaży oprogramowania --- i nawet wtedy niektórzy ludzie nadal rozdają oprogramowanie jako np. RStudio, którego kod źródłowy znajduje się na github.
Dirk Eddelbuettel

Odpowiedzi:

16

Tak to jest. Na przykład na tej stronie znajduje się wspaniała bezgłowa instancja serwera RServe R (autorstwa członka R Core Simona Urbanka), która zawiera listę tych wdrożeń:

Some projects using Rserve:
   The Dataverse Network Project   Phenyx                     "J" interface
   Nexus BPM                       Taverna                    Bio7
   INTAMAP                         Screensaver HTS LIMS       CRISP
   WWARN

z linkami na stronie, o której mowa powyżej.

„Przemysł” jest bardziej klarowny w stosunku do szczegółów niż środowisko akademickie, więc trudno będzie znaleźć „oficjalne” oświadczenia. Ale dostawcy tacy jak Revolution Analytics lub Oracle wysyłają R, a ich sprzedawcy mogą mieć dla Ciebie historie ...

Dirk Eddelbuettel
źródło
3
+1 dla sprzedawców. Załóżmy, że chcesz coś kupić, a spora liczba sprzedawców poda numer SSN swojego CEO.
Fomite,
1

Zazwyczaj nie, ponieważ R jest językiem interpretowanym, który średnio jest wielokrotnie wolniejszy niż równoważny skompilowany kod. Podczas konwersji programu na C, Fortran lub Java wymaga znacznej inwestycji, kod może dosłownie działać 10-100 razy szybciej niż równoważna wersja R. Ponadto R ma bardzo ograniczone narzędzia do manipulowania dużymi zestawami danych, zwłaszcza tymi, które wymagają klastrów do przetwarzania lub wymagają specjalnego sprzętu. Co więcej, większość komercyjnych wdrożeń musi zapewniać interfejsy użytkownika i pasować do istniejących frameworków, które zazwyczaj są pisane w innych językach. Chociaż możesz połączyć się z istniejącym kodem R z większości skompilowanych języków (są tam opakowania), okazałoby się, że twoje podstawowe procedury numeryczne nadal nie byłyby szybsze niż oryginalny kod R. Pod koniec dnia,

użytkownik1337732
źródło
2
> (...) kod może działać dosłownie 10-100 razy szybciej niż równoważna wersja R. Nie zgadzam się. Prawie wszystkie biblioteki R są napisane w C lub Fortran. R działa głównie jako „klej” między nimi, a jego względnie słaba wydajność się nie liczy.
Adam Ryczkowski
1
Nie prawda. Podczas gdy podstawowa biblioteka może być napisana w C, większość algorytmów wysokiego poziomu w R jest napisanych w R. Optymalizacja JIT zmienia reguły w odniesieniu do wydajności języków interpretowanych w porównaniu z językami kompilowanymi, ale o ile wiem, nie ma wysiłku te linie są w toku dla R (Python ma duży wysiłek: patrz PyPy).
user1337732
1
Regularnie używam R do pracy na macierzach o rozmiarze 2 GB.
Jan Galkowski
0

Uważam (ale opiera się to na anegdocie), że R jest częściej używany jako język prototypowania przez firmy, które wymieniasz powyżej. R wyróżnia się zadaniem szybkiego i skutecznego opracowywania i testowania wielu modeli. Jednak nie nadaje się do zadań personalizacyjnych, ponieważ często muszą się one odbywać, gdy użytkownik wchodzi w interakcję z określoną witryną i uważam (znowu, to głównie anegdota), że takie modele zwykle są przepisywane w skompilowanym języku (Java, C, C ++).

To powiedziawszy, dobre pytanie i chciałbym, aby udowodniono, że się mylę w tej sprawie.

richiemorrisroe
źródło