Como R e Python se complementam na ciência de dados?

54

Em muitos tutoriais ou manuais, a narrativa parece implicar que R e python coexistem como componentes complementares do processo de análise. Para meus olhos destreinados, no entanto, parece que os dois idiomas fazem o mesmo.

Então, minha pergunta é se existem nichos realmente especializados para os dois idiomas ou se é apenas uma preferência pessoal usar um ou outro?

BioHazZzZard
fonte
2
Isso realmente não parece uma duplicata desse segmento. Não se trata de como usar o Python para fazer estatísticas, é sobre como o Python pode complementar o R ​​(obviamente, o R seria usado para fazer as análises estatísticas).
gung - Restabelece Monica
4
R se você fosse estatístico há 10 anos. Python, se você quiser colocar seu código em produção em algum lugar ou reutilizá-lo.
djechlin
11
Relacionados: datascience.stackexchange.com/questions/326
Juho Kokkala
3
Devido à popularidade deste q., & Em resposta a solicitações por meio de sinalizadores, eu o reabri, mas o tornei CW.
Scortchi - Restabelece Monica
11
O que muitas respostas tendem a esquecer é que estão comparando a linguagem Python com a implementação GNU-R. O R também possui outras implementações (consulte Renjin , escrito em Java, Microsoft R Open , que é compilado com Intel MKL, FastR , pqR , etc.). Eles tentam corrigir alguns problemas com o GNU-R, uma implementação muito mais conservadora. Além disso, lembre-se de que R não tem definição formal.
Firebug

Respostas:

45

Eles são complementares. É verdade que ambos podem fazer as mesmas coisas, mas isso pode ser dito da maioria dos idiomas. Cada um tem seus pontos fortes e fracos. A perspectiva comum parece ser que o Python é melhor para coleta e preparação de dados, bem como para análise textual. R é considerado melhor para a análise dos dados, pois é uma linguagem estatística em primeiro lugar.

O R tem uma variedade enorme de pacotes para tudo o que você pode imaginar, mas seu ponto principal é a análise estatística - do qui-quadrado básico à análise fatorial e modelos de risco, é fácil e robusto. Alguns dos maiores nomes das estatísticas criam pacotes R e possui uma comunidade animada para ajudar com todas as suas necessidades. ggplot2é um padrão na visualização de dados (gráficos etc.). R é uma linguagem vetorizada e construída para fazer um loop através dos dados de maneira eficiente. Ele também armazena todos os dados na RAM, que é uma faca de dois gumes - é ágil em conjuntos de dados menores (embora alguns possam argumentar comigo), mas não consegue lidar bem com grandes dados (embora tenha pacotes para contornar isso) , como ff).

O Python é consideravelmente mais fácil de aprender do que o R - especialmente para aqueles que têm experiência anterior em programação. R é apenas ... estranho. O Python é ótimo na recuperação de dados e é a linguagem a ser usada na raspagem da Web (com o incrível beautifulsoup). O Python é conhecido por sua força na análise de cadeias e manipulação de texto. pandasé uma ótima biblioteca para manipulação de dados, mesclagem, transformação, etc., e é rápida (e provavelmente inspirada em R).

Python é ótimo quando você precisa fazer alguma programação. Isso não é surpreendente, pois é uma linguagem de uso geral. R, no entanto, com todas as suas extensões, foi construído por estatísticos para estatísticos. Portanto, embora o Python possa ser mais fácil, melhor e mais rápido em muitos aplicativos, R seria a plataforma preferida para análise estatística.

Yuval Spiegler
fonte
13
Como alguém que conhece os dois, eu concordo com isso; pode haver muitos argumentos estilísticos, mas a maior diferença é que, quando é hora de realmente executar modelos estatísticos causais, o Python é subdesenvolvido. O pacote statsmodels fornece alguns conceitos básicos, mas não se aproxima de R, Stata ou Sas. Uma exceção notável é a análise de estilo de aprendizado de máquina, para a qual o scikitlearn do Python combina bem. Para todo o resto, acho que podem ser apresentados bons argumentos de que o Python é pelo menos igual a R e geralmente superior. Aprender os dois não é de forma alguma um mau uso do tempo.
Jeff
2
Concordo com a maior parte disso - mas enfatizaria mais os problemas - o R não é bom para grandes conjuntos de dados e não lida com conjuntos de dados esparsos (a maioria das bibliotecas não o suporta) muito bem (que é o que muitos executam aprendizado de máquina) por exemplo, modelos do tipo 'saco de palavras' em que a cardinalidade de uma variável fator / categoria categórica pode estar nos anos 1000.
seanv507
10
Não para iniciar um argumento em um encadeamento de comentários, mas o data.tablepacote em R destina-se especificamente a um trabalho eficiente em torno de grandes conjuntos de dados e se conecta perfeitamente ao processamento distribuído.
estrela brilhante
3
Se você acha que o Python é melhor que o R na recuperação de dados e na análise de cadeias, então você está usando o R muito errado o tempo todo. O mesmo vale para "R não é bom para grandes conjuntos de dados e não lida com conjuntos de dados esparsos (a maioria das bibliotecas não o suporta) muito bem" .
gented 7/10/16
3
aumentando o impulso de Trevor data.table; Eu também estou feliz em dizer rvesté uma excelente ferramenta para lidar com tarefas mais raspagem, e muito mais fácil de se levantar e correr do quebeautifulsoup
MichaelChirico
21

Tentarei formular uma resposta abordando os principais pontos em que os dois idiomas entram em jogo para ciência de dados / estatística / análise de dados e similares, como alguém que usa os dois.

O fluxo de trabalho na análise de dados geralmente consiste nas seguintes etapas:

  1. Buscando os dados de algum tipo de origem (provavelmente um banco de dados SQL / noSQL ou arquivos .csv).
  2. Analisando os dados em um formato decente e razoável (quadro de dados) para que se possa realizar operações e pensar nisso.
  3. Aplicando algumas funções aos dados (agrupamento, exclusão, mesclagem, renomeação).
  4. Aplicação de algum tipo de modelo aos dados (regressão, agrupamento, uma rede neural ou qualquer outra teoria mais ou menos complicada).
  5. Implantando / apresentando seus resultados para um público mais ou menos técnico.

Buscando dados

Em 99% do tempo, o processo de busca de dados se resume à consulta de algum tipo de banco de dados SQL ou Impala: o Python e o R têm clientes ou bibliotecas específicas que fazem o trabalho rapidamente e igualmente bem ( RImpala, RmySQLpara o R e MySQLdbpara o Python funcionar sem problemas, não há muito a acrescentar). Quando se trata de ler arquivos .csv externos, o data.tablepacote para R fornece a função freadque lê arquivos enormes e complicados .csv com qualquer opção de análise personalizada rapidamente e transforma o resultado diretamente em quadros de dados com nomes de colunas e números de linhas.

Organizando os quadros de dados

Queremos que os dados sejam armazenados em algum tipo de tabela para que possamos acessar qualquer entrada, linha ou coluna com facilidade.

O pacote Rdata.table oferece maneiras imbatíveis de rotular, renomear, excluir e acessar os dados. A sintaxe padrão é muito parecida com o SQL dt[i, j, fun_by], onde deve estar dt[where_condition, select_column, grouped_by (or the like)]; funções personalizadas definidas pelo usuário podem ser inseridas, assim como na jcláusula, para que você fique completamente livre para manipular os dados e aplicar qualquer função complicada ou sofisticada em grupos ou subconjuntos (como a i-ésima linha, k-ésima e soma-o ao (k-2) -ésimo elemento da (i-1) -ésima linha se e somente se o desvio padrão de toda a coluna for o que é, agrupado pela última coluna). Dê uma olhada nos benchmarks e nesta outra pergunta incrível sobre SO. A classificação, a exclusão e a renomeação de colunas e linhas fazem o que elas precisam fazer, e os métodos R vetorizados padrão apply, sapply, lapply, ifelseexecutam operações vetorizadas em colunas e quadros de dados completamente, sem repetir cada elemento (lembre-se de que sempre que você estiver usando loops em R, você estão fazendo muito mal).

O contraponto do Python é a pandasbiblioteca. Finalmente, ele fornece a estrutura pd.DataFrame(que falta ao Python padrão, por algum motivo ainda desconhecido para mim) que trata os dados pelo que eles são, ou seja, quadros de dados (em vez de alguns numpy array, numpy list, numpy matrixou o que for). Operações como agrupamento, renomeação, classificação e similares podem ser facilmente alcançadas e também aqui o usuário pode aplicar qualquer função personalizada a um conjunto de dados ou subconjunto do quadro usando Python applyou lambda. Pessoalmente, não gosto da gramática df[df.iloc(...)]para acessar as entradas, mas isso é apenas gosto pessoal e não tem problema algum. Os benchmarks para operações de agrupamento ainda são um pouco piores que R, data.tablemas, a menos que você queira economizar 0,02 segundos para a compilação, não há grande diferença no desempenho.

Cordas

A maneira R de tratar seqüências de caracteres é usar o stringrpacote que permite qualquer manipulação de texto, anagrama, expressão regular, espaços em branco à direita ou similar com facilidade. Também pode ser usado em combinação com as bibliotecas JSON que descompactam dicionários JSON e listam seus elementos, para que se tenha um quadro de dados final em que os nomes das colunas e os elementos sejam o que devem ser, sem nenhum caractere não UTF8 ou espaço em branco lá.

O Pandas do Python .str. faz o mesmo trabalho de brincar com expressões regulares, seguindo ou tão bom quanto seu concorrente, portanto, mesmo aqui não há grande diferença de gosto.

Aplicando modelos

Aqui é onde, na minha opinião, surgem diferenças entre os dois idiomas.

RA partir de hoje, possui um conjunto imbatível de bibliotecas que permitem ao usuário fazer essencialmente o que quiser em uma ou duas linhas de código. Regressões funcionais ou polinomiais padrão são executadas em linhas únicas e produzem resultados cujos coeficientes são facilmente legíveis, acompanhados por seus correspondentes intervalos de confiança e distribuições de valores p. Da mesma forma para agrupamento, da mesma forma para modelos florestais aleatórios, da mesma forma para dendogramas, análise de componentes principais, decomposições de valores singulares, ajustes logísticos e muito mais. O resultado de cada uma das opções acima provavelmente vem com uma classe de plotagem específica que gera visualizações do que você acabou de fazer, com cores e bolhas para coeficientes e parâmetros. Testes de hipóteses, testes estatísticos, Shapiro,

Python está tentando acompanhar SciPye scikit-learn. A maioria das análises e modelos padrão também está disponível, mas eles são um pouco mais longos para codificar e menos intuitivos para ler (na minha opinião). Faltam máquinas mais complicadas, embora algumas possam ser rastreadas até algumas combinações das bibliotecas já existentes. Uma coisa que eu prefiro fazer no Python do que no R é a análise de texto com palavras de ordem gramatical, bi-gramas, tri-gramas e ordens superiores.

Apresentando os resultados

Ambas as linguagens possuem belas ferramentas de plotagem, R ggplot2acima de tudo e o equivalente equivalente em Python. Não há muito o que competir, eles fazem o trabalho são e salvo, embora eu acredite que, se você estiver apresentando os resultados, poderá usar outras ferramentas - existem ferramentas de design coloridas sofisticadas por aí e nem o Python nem o R pretendem surpreender o público. público com arrasto vermelho e verde chique e gotas. Ultimamente, o R publicou muitas melhorias em seus shiny apprecursos, que basicamente permitem produzir resultados interativos . Eu nunca quis aprender, mas sei que existe e as pessoas o usam bem.


Nota

Como observação lateral, eu gostaria de enfatizar que a principal diferença entre as duas linguagens é que o Python é um idioma de programação de uso geral, criado por e para ciência da computação, portabilidade, implantações e assim por diante. É incrível no que faz e é fácil de aprender; não há ninguém que não goste de python. Mas é uma linguagem de programação para fazer programação.

R, por outro lado, foi inventado por e para matemáticos, físicos, estatísticos e cientistas de dados. Se você vem desse contexto, tudo faz todo sentido, porque reflete e reproduz perfeitamente os conceitos usados ​​em estatística e matemática. Mas se, em vez disso, você vem de um conhecimento em ciência da computação e deseja simular Java ou C em R, ficará desapontado; não possui "objetos" no sentido padrão (bem, sim, mas não o que normalmente se pensa que são ...), não possui classes no sentido padrão (bem, sim, mas não o que normalmente pensa que são ...), ele não tem "ponteiros" ou todas as outras estruturas de ciência da computação - mas apenas porque não precisa deles. Por último mas não menos importante: documentação e pacotes são fáceis de criar e ler (se você estiver usando o Rstudio); existe uma comunidade grande e apaixonada por aí, e leva literalmente cinco segundos para o Google "como inserir problema aleatório em R" cuja primeira entrada o redireciona para uma solução para o problema (feito por outra pessoa) com o código correspondente , em nenhum momento.

A maioria das empresas industriais possui sua infraestrutura construída em Python (ou em um ambiente compatível com Python) que permite a fácil integração do código Python (em import myAnalysisqualquer lugar e basicamente você está pronto). No entanto, qualquer tecnologia ou servidor ou plataforma moderna executa facilmente o código R em segundo plano sem nenhum problema.

Gennaro Tedesco
fonte
8
+6, esta é uma resposta muito boa: detalhada, precisa e equilibrada.
gung - Restabelece Monica
+1 Melhor resposta aqui. É engraçado, eu vim para o Java de R (embora não em uma rota direta), e gostei bastante dele. Eu não acho necessariamente que fazer loops em R significa que você está fazendo errado. Às vezes, eu me coçava tentando burlar o uso de loops, mas não conseguia encontrar uma maneira de contorná-lo (como criar novos valores de variáveis ​​em um conjunto de dados com base nas condições das linhas anteriores e buscar dados de conjuntos de dados secundários).
Yuval Spiegler
Se apenas essa infinidade de pacotes R fizesse alguma coisa sob o sol, todos foram escritos por pessoas que sabem como fazer computação estatística / escrevem software matemático numérico confiável e robusto / conhecem análise numérica, etc. Alguns dos pacotes R são muito bons. Um número muito grande de pacotes R, mesmo alguns escritos por autores famosos, são lixo total - e muitos dos usuários nem percebem que estão recebendo lixo. Oh, está no CRAN, deve ser bom, ou pelo menos correto, ou confiável ... ERRADO !!!!!
Mark L. Stone
"A R tem, até hoje, um conjunto imbatível de bibliotecas que permitem ao usuário fazer essencialmente o que quiser em uma ou duas linhas de código". Concordo 100%, a menos que obter a resposta correta seja uma das coisas que o usuário deseja.
Mark L. Stone
8
@ MarkL.Stone Você se importaria de apresentar um exemplo de pacotes padrão escritos por usuários famosos que dão resultados errados?
gented 10/10/16
15
  • Python é uma linguagem de programação geral: portanto, é bom para executar muitas outras tarefas além da análise de dados. Por exemplo, se queremos automatizar a execução do nosso modelo no servidor de produção, o python é uma ótima opção. Outros exemplos incluem conectar-se a hardware / sensores para ler dados, interagir com bancos de dados (dados relacionais ou não estruturados como JSON), analisar dados, programação de rede (TCP / IP), interface gráfica do usuário, interagir com shell etc. (Bem, por que um cientista de dados quer fazer tantos desses tipos de tarefas, que pouco têm a ver com modelos preditivos? Acho que as pessoas têm definições diferentes O que é um cientista de dados?Em algumas organizações, analisar os dados e fazer a análise descritiva com o painel é bom o suficiente para os negócios e os dados não são maduros o suficiente para a criação de modelos preditivos. Por outro lado, em muitas pequenas empresas, as pessoas podem esperar que os cientistas de dados façam muita engenharia de software. Conhecer python o tornará independente de outros engenheiros de software.)

  • O R possui muitos pacotes estatísticos muito melhores que o python ou o MATLAB. Usando R, pode-se realmente pensar no nível do modelo, em vez do nível de detalhe da implementação. Essa é uma grande vantagem no desenvolvimento de modelos estatísticos. Por exemplo, muitas pessoas estão implementando manualmente redes neurais em python; fazer esse trabalho pode não ajudar a entender por que as redes neurais funcionam, mas apenas seguir a receita para duplicar o trabalho de outras pessoas e verificar se funciona. Se estivermos trabalhando no R, podemos focar facilmente na matemática por trás do modelo, em vez dos detalhes da implementação.

Em muitos casos, as pessoas as usam juntas. Construir software é fácil de fazer em python, e construir modelos é melhor em R. Se queremos entregar um modelo em produção, mas não um artigo, podemos precisar de ambos. Se sua empresa possui muitos engenheiros de software, você pode precisar de mais R. E se sua empresa possui muitos pesquisadores, talvez precise de mais python.

hxd1011
fonte
2
Boa resposta, mas você escreveu 'Jason' em vez de 'JSON', me deu uma boa risada
par
Na verdade, não sou membro das comunidades de estatísticas ou de "aprendizado de máquina", mas acho que a disponibilidade de pacotes avançados é algo específico da comunidade. Eu posso acreditar que muitas técnicas estatísticas novas e avançadas vêm com o código R. Mas quando vejo papéis de visão computacional / aprendizado de máquina / redes neurais que vêm com códigos ("de alto nível") ... eles parecem ser Matlab ou python.
GeoMatt22
11
+1 para discutir como os idiomas influenciam a maneira como se pensa. Uma grande vantagem de R é, porque é construído por estatísticos para estatísticos, como ele incentiva o pensamento em termos de modelagem. Divulgação: Sou fluente em R, mas apenas me envolvo em Python.
Ashe
Hum ... que tal scikit-learn? scikit-learn.org/stable
navio de guerra
10

Programadores de todas as faixas subestimam o quanto as opções de idioma são culturais . Desenvolvedores da Web como Node.js. Cientistas como Python. Como engenheiro de software poliglota que consegue lidar com a fluidez de Javascript e a rigidez de Java da mesma forma, percebi que não há nenhuma razão intrínseca para essas linguagens serem ruins nos trabalhos umas das outras - apenas a enorme quantidade de pacotes, documentação, comunidades, livros, etc. em torno deles.

(Por razões intrínsecas, um idioma aleatório é melhor que outro idioma, consulte os próximos comentários a esta resposta.)

Minha previsão pessoal é de que o Python é o caminho do futuro, porque ele pode fazer tudo o que R pode - ou melhor, o suficiente do que R os programadores dedicados estão trabalhando para preencher as lacunas - e é uma linguagem de engenharia de software muito melhor. Engenharia de software é uma disciplina que lida com:

  • Confiando na confiabilidade do seu código o suficiente para colocá-lo em produção (qualquer modelo de aprendizado de máquina que atenda aos usuários em tempo real)
  • garantindo que seu código possa continuar funcionando enquanto sofre modificações e reutilizações (estruturas de teste de unidade, por exemplo)
  • foco na legibilidade, para benefício de outras pessoas e de você mesmo em menos de 6 meses
  • uma ênfase profunda na organização do código, para facilitar a versão, os backups para as versões de trabalho anteriores e o desenvolvimento simultâneo de várias partes
  • preferindo ferramentas e tecnologias com melhor documentação e, idealmente, com a propriedade de que elas não funcionarão, a menos que você as use corretamente (essa foi a minha maior reclamação com o Matlab - pesquiso no Google uma pergunta e preciso ler seus fóruns bastante terríveis procurando por uma resposta)

Além disso, francamente, Python é mais fácil de aprender.

Cientistas e estatísticos perceberão que são partes interessadas em boas práticas de engenharia de software, não uma profissão independente e despreocupada. Apenas minha opinião, mas os documentos que comprovam a fragilidade do código acadêmico apoiarão isso.

Esta resposta é toda a minha opinião - mas você fez uma pergunta muito opinativa e, como foi bem recebida até agora, senti que você merecia uma opinião despretensiosa e razoavelmente informada (espero!). Existe um argumento sério para Python sobre R em geral, e eu seria negligente tentar postar respostas não partidárias quando a realidade pode ser partidária.

djechlin
fonte
Julia, quando crescer, não seria uma alternativa melhor que Python?
Kjetil b halvorsen
11
@kjetilbhalvorsen "quando crescer" é mais um "se", é muito difícil substituir uma linguagem estabelecida, e é basicamente uma escolha pessoal se você quer estar na tecnologia de fronteira, correndo o risco de nunca ser adotado com firmeza. OMI, Python tem o momento agora. Embora eu não esteja muito familiarizado com Julia, essa é uma opinião bastante genérica.
djechlin
11
Exceto pelo primeiro marcador, não consigo ver como o Python é inerentemente superior em nenhum dos outros quatro pontos.
Firebug
4
"Python pode fazer tudo o que R pode" é falso. "o suficiente do que R os programadores dedicados estão trabalhando para preencher as lacunas" bem, isso seria verdade para qualquer coisa no mundo - qualquer coisa pode ser feita para fazer qualquer coisa, desde que alguém trabalhe nela.
gented 7/10/16
2
@djechlin Totalmente não. Seu exemplo de confiabilidade foi "qualquer modelo de aprendizado de máquina que atenda aos usuários em tempo real". O Python é melhor nisso porque suporta a implantação com muito mais facilidade do que o R, e somente isso. Teste de unidade, legibilidade, organização e documentação não são qualidades inerentes. Você pode implementar seus próprios testes, tornar seu código mais fácil de ler, organizá-lo e a documentação do R é realmente fácil de entender.
Firebug
8

Eu sou um usuário R, mas acho que o Python é o futuro (não acho que seja a sintaxe)

Python é o futuro
O benefício do Python é que outras pessoas já mencionaram o suporte muito mais amplo e, para os programadores, uma sintaxe mais lógica.
Além disso, a capacidade de traduzir as descobertas da sua análise em um sistema de produção é muito mais direta.
Talvez seja por causa do Python ser de uso geral e R não ser, mas eu levanto as sobrancelhas quando vejo um pipeline R produzido.
Mas não é só isso, mesmo para aplicativos avançados, o Python está se recuperando rapidamente (Scikit-learn, PyBrain, Tensorflow etc.) e enquanto R ainda é a língua franca nos acadêmicos sobre como implementar métodos estatísticos, o Python ficou enorme no setor profissional devido a o advento de bibliotecas especializadas avançadas.

Mas R não é ruim
Parece que muitas pessoas gostam de pular na onda "R tem sintaxe ruim".
Desejo propor que a sintaxe de R seja uma coisa boa!
Funções de atribuição, avaliação lenta, avaliação fora do padrão e fórmulas são enormes benefícios ao usar R.
Poupa muito tempo para não ter que se preocupar em escapar de nomes de variáveis ​​referenciados no seu resumo ou em como construir a lógica do que é modelado com relação ao que ou olhando nomes com names()e, em seguida, atribuindo novos nomes adicionando <- c("A", "B", "C").
Quando as pessoas reclamam da estranha sintaxe de R, elas a encaram como uma linguagem de programação, não como uma ferramenta de ciência de dados.
Como alguém vindo de R e amando dplyr, acho a sintaxe dos pandas um pouco desajeitada em comparação.
Sim, é um pouco mais flexível, mas para a maioria das tarefas, você precisa de muito mais pressionamentos de tecla para executar um comando simples do que no R, que existe apenas para satisfazer o analisador do Python, não para expressar sua ideia.

Em resumo
É claro que é aconselhável conhecer os dois e enquanto o Python está chegando lá, as opções de design específicas do domínio da R apenas simplificam o trabalho ad hoc. A grande desvantagem do R é que é difícil deixar seu domínio, o que você basicamente precisa fazer quando tenta implementar suas descobertas de maneira sustentável.

Robin Gertenbach
fonte
4

Se você considera R mais uma ferramenta estatística e não uma linguagem de programação, é realmente ótimo. Possui muito mais flexibilidade do que o Stata ou o SPSS, mas pode fazer tudo o que pode. Eu aprendi Stata durante a faculdade, e R era fácil de ver porque eu já tinha a perspectiva da ferramenta estatística e não uma pura experiência em linguagem de programação que outros possam ter.

Eu acho que a frustração com R entra em cena quando aqueles que são programadores tentam aprender e entender R; mas é uma ótima ferramenta para quem chega ao R por meio de um histórico estatístico.

O Python é ótimo se você já é um ótimo programador; mas para mim, como iniciante em programação e estatística, acabei de sair da faculdade, R era uma escolha muito melhor. É realmente apenas a preferência de qual deles se encaixa no seu conjunto de habilidades e interessa mais.

JBeazer
fonte
3

Adicionando a algumas das respostas anteriores:

Na minha experiência, não há nada mais fácil do que usar dplyr + tidyr, ggplot e Rmarkdown na obtenção de dados brutos para resultados apresentáveis. O Python oferece muito, e eu o uso cada vez mais, mas com certeza adoro o modo como os pacotes de Hadley se unem.

BStange
fonte
2

O Python tem uma ampla adoção fora da ciência, então você se beneficia com tudo isso. Como "An Angry Guide to R" aponta, o R foi desenvolvido por uma comunidade, que tinha que pedir a primeira desenvolvedores de software zero.

Eu diria que hoje o R tem dois pontos fortes principais: alguns pacotes altamente especializados realmente maduros em algumas áreas e o pacote de pesquisa reprodutível de ponta knitr.

Python parece ser mais adequado para todo o resto.

Esta é uma opinião, é claro, como quase tudo neste segmento. Estou meio surpreso que esse tópico ainda esteja vivo.

Gena Kukartsev
fonte
2

Como descrito em outras respostas, o Python é uma boa linguagem de programação de uso geral, enquanto o R apresenta falhas graves como linguagem de programação, mas possui um conjunto mais rico de bibliotecas de análise de dados. Nos últimos anos, o Python acompanhou o R com o desenvolvimento de bibliotecas maduras de análise de dados, como o scikit-learn, enquanto o R nunca será corrigido. Na prática, eu uso o Python (na verdade, Hy ) para quase tudo e apenas recorro ao R para métodos relativamente esotéricos, como a regressão quantílica (cuja implementação nos modelos estatísticos do Python parece estar quebrada). Existem várias maneiras de chamar R do Python; O PypeR é simples o suficiente para que eu trabalhe em ambientes hostis como um servidor Windows.

Edit : Encorajo qualquer pessoa que queira discutir mais sobre isso a falar com os autores do ensaio vinculado, em vez de comentar essa resposta.

Kodiologist
fonte
8
Esse guia do arRgh é a crítica mais sem noção que eu já li sobre o R (e eu já li muitos).
Firebug
10
"A documentação é incrivelmente ruim", isso não tem noção. A força do R é sua simplicidade para não programadores e sua vasta documentação. "Como até o nome de R é estúpido, é realmente difícil colocar as coisas no R de maneira útil. Desculpe. Bem-vindo ao R!", Isso não tem noção. Eu nunca encontrei nenhum problema ao tentar encontrar documentação para os pacotes mais obscuros do mercado. "Você renomeia as colunas atribuindo assustadoramente aos nomes (quadro). Você sabe como e por que isso funciona? Por favor, me instrua.", Vamos lá, ele nem está tentando.
Firebug 06/10
8
Como o R é mais difícil de pesquisar do que o C? Google é esperto. Ele descobre que você está interessado na linguagem de programação R. R é criticada principalmente por pessoas com experiência em outras linguagens de programação. Desculpe, mas não foi desenvolvido como uma alternativa para esses idiomas. Foi desenvolvido para e por estatísticos. Como resultado, algumas decisões de design não foram ótimas, mas dizer que há falhas sérias é um pouco forte. Toda linguagem de programação tem seus pontos fortes e fracos.
Roland
5
Criar um pacote é realmente muito fácil. Isso só fica complicado se você seguir as regras (corretamente) aplicadas pelo CRAN. Você pode importar seletivamente dos pacotes se criar um pacote. A reciclagem de vetores é realmente uma força. Não há inconsistências entre a lista de subconjuntos e os vetores. Alguns dos demais podem realmente ser considerados falhas.
Roland
6
R tem claramente verrugas, algumas das indiscutíveis variedades "wat" (stringsAsFactors). Mas também possui bibliotecas estatísticas que não têm paralelo, nem mesmo remotamente, em qualquer outro idioma. A programação necessária para criar essas bibliotecas é mais séria do que a grande maioria de nós precisará. Como uma declaração geral, "R não é uma linguagem séria" está entre algas sem noção, irremediavelmente paroquiais, analfabetas e azedas. E digo isso como alguém que deseja que R seja basicamente Python com as bibliotecas de R.
Paul