Estou planejando começar a escrever pacotes R.
Eu pensei que seria bom estudar o código fonte dos pacotes existentes para aprender as convenções de construção de pacotes.
Meus critérios para bons pacotes para estudar:
- Idéias técnicas / estatísticas simples : o objetivo é aprender sobre a mecânica da construção de pacotes. A compreensão do pacote não deve exigir um conhecimento altamente específico e específico do domínio sobre o tópico real do pacote.
- Estilo de codificação simples e convencional : estou procurando algo um pouco mais do que,
Hello World
mas não muito mais. Truques e truques idiossincráticos seriam uma distração quando aprendemos os pacotes R. - Bom estilo de codificação : o código está bem escrito. Revela um entendimento de boa codificação, em geral, e uma conscientização das convenções de codificação em R.
Questões:
- Quais pacotes seriam bons para estudar?
- Por que o código-fonte do pacote sugerido seria bom para estudar em relação aos critérios mencionados acima ou a qualquer outro critério que possa ser relevante?
Atualização (13/12/2010) Após os comentários de Dirk, eu queria deixar claro que sem dúvida muitos pacotes seriam bons para estudar primeiro. Também concordo que os pacotes fornecerão modelos para coisas diferentes (por exemplo, vinhetas, classes S3, classes S4, testes de unidade, Roxygen, etc.). No entanto, seria interessante ler sugestões concretas sobre bons pacotes para começar e as razões pelas quais eles seriam bons pacotes para começar.
Também atualizei a pergunta acima para se referir a "pacotes" em vez de "pacote".
Respostas:
Sugiro olhar para o pacote do zoológico pelos seguintes motivos:
useDynLib
,import
,export
, eS3method
;RUnit
;.Call
interface;Ele não usa roxo, o que é muito útil, mas 7 em 8 não são ruins. ;-)
Para responder aos seus critérios:
zoo
é uma classe de matriz ordenada por alguma coisa . Nenhum conhecimento específico do domínio é necessário.zoo
parece ter algumas convenções de codificação idiossincráticas, mas nada exagerado que impede a compreensão do código.zoo
pretende ser o mais consistente possível com R.fonte
Não me considero um desenvolvedor de pacotes R estabelecido, mas recentemente passei pelo processo de escrever e manter um pacote para o meu ambiente de trabalho.
Anteriormente, eu estava escrevendo / mantendo / atualizando um conjunto de scripts que passaria de um projeto para outro por meio da
source()
função O resultado final foi que eu acabaria com scripts redundantes em vários lugares de nossas unidades de rede. Nunca ficou claro onde estava o conjunto de scripts mais atualizado. Desde então, migrei para escrever / manter um pacote utilizando o roxygen. Simplificou drasticamente minha vida e facilitou o compartilhamento de meu trabalho com colegas.Com base nos seus critérios acima, apóio a recomendação de revisar os pacotes que Hadley escreveu. Em particular, acho que ler o wiki do devtools seria muito útil. O código de Hadley está bem documentado e vários de seus pacotes utilizam roxygen. Acho que escrever e manter um documento para as funções e documentação R é muito mais fácil do que dividi-los em dois locais (arquivos .R e .RD).
Os pacotes de Hadley também servem alguns conceitos bastante básicos e são relativamente fáceis de separar (imho) se você estiver procurando por dicas sobre as idéias de aspectos técnicos. Eu me pego pesquisando o código-fonte plyr quando estou procurando um ponteiro sobre a documentação do roxygen ou outras tarefas fundamentais.
fonte
Por que não adotar uma abordagem de amostragem aleatória empiricamente orientada? Basta escolher alguns e ver qual funciona para você.
Brincadeiras à parte, basta olhar para alguns pacotes que você mesmo usa e está familiarizado. É fácil fazer o download deles ou, se preferir, também é possível visualizá-los por meio de uma interface da Web no R-Forge, RForge ou Github.
Você provavelmente acabará com pacotes diferentes para idéias diferentes. Alguns podem ajudá-lo com a maneira como eles integram, digamos, uma vinheta. Alguns podem ajudar com o código compilado. Ou testes de unidade. Ou Roxygen. Existem cerca de 2600 deles, então por que ficar obcecado com um único melhor?
fonte
Outro conselho pode ser procurar pacotes que os seus dependerão ou interagirão, especialmente se eles implementarem alguns itens que Joshua Ulrich mencionou ou foram escritos por autores renomados. Pode ser útil aprender como as coisas são feitas em seu campo, para garantir alguma compatibilidade. Muitas vezes, as pessoas pensam sobre certos problemas e a leitura da solução pode ser útil.
fonte
eu recomendaria o pacote de reformulação do hadley. você pode encontrar a fonte em https://github.com/hadley/reshape
fonte