Quais são as maneiras eficientes de organizar o código e a saída R? [fechadas]

23

Estou procurando informações sobre como os outros organizam seus códigos e saídas R.

Minha prática atual é escrever código em blocos em um arquivo de texto como:

#=================================================
# 19 May 2011
date()
# Correlation analysis of variables in sed summary
load("/media/working/working_files/R_working/sed_OM_survey.RData")
# correlation between estimated surface and mean perc.OM in epi samples
cor.test(survey$mean.perc.OM[survey$Depth == "epi"], 
    survey$est.surf.OM[survey$Depth   == "epi"]))
#==================================================

Em seguida, colo a saída em outro arquivo de texto, geralmente com algumas anotações.

Os problemas com este método são:

  1. O código e a saída não estão explicitamente vinculados, exceto por data.
  2. O código e a saída são organizados cronologicamente e, portanto, podem ser difíceis de pesquisar.

Eu considerei fazer um documento Sweave com tudo, já que eu poderia criar um índice, mas isso parece ser mais complicado do que os benefícios que ele proporcionaria.

Informe-me sobre as rotinas eficazes que você tem para organizar seu código e saída R que permitiriam uma pesquisa e edição eficientes da análise.

DQdlM
fonte
2
Apenas para evitar copiar / colar, sink()ou capture.output()podem ser seus amigos. Vale a pena considerar os utilitários de relatórios, como Hmisc , Sweave ou brew (seu ponto 1). Os sistemas de controle de versão ( rcs , svn ou git ) podem ajudar no ponto 2.
chl
@chl - obrigado pelas sugestões. Eu não estava ciente sink()e capture.output(). Isso é ótimo.
DQdlM 20/05
1
hoje também há knitr!
Kjetil b halvorsen

Respostas:

22

Você não é a primeira pessoa a fazer esta pergunta.

Bernd Weiss
fonte
+1 eo primeiro link que você fornecer referências um fio nela :-)
chl
@chl Obrigado! Eu queria saber se esta pergunta é um duplicado e deve ser fechado ...
Bernd Weiss
É IMO. Mas como não há votos para fechar, reluto em fechá-lo. Além disso, a mais antiga era mais geral, mas uma questão muito semelhante foi encerrada no passado. Vamos esperar e ver como vai.
chl
obrigado pela lista! Isso é muito útil. Achei que não era o primeiro a ter essa pergunta, mas não pareceu encontrar muita coisa com minha pesquisa inicial (obviamente inepta).
DQdlM 20/05
6

Eu, por um lado, organize tudo em 4 arquivos para cada projeto ou análise. (1) 'código' Onde armazeno arquivos de texto das funções R. (2) 'sql' Onde mantenho as consultas usadas para coletar meus dados. (3) 'dat' Onde mantenho cópias (geralmente csv) dos meus dados brutos e processados. (4) 'rpt' Onde armazeno os relatórios que distribuí.

TODOS os meus arquivos são nomeados usando nomes muito detalhados, como 'analysis_of_network_abc_for_research_on_modified_buffer_19May2011'

Também escrevo documentação detalhada com antecedência, onde organizo a hipótese, quaisquer suposições, critérios de inclusão e exclusão e as etapas que pretendo tomar para alcançar minha entrega. Tudo isso é inestimável para pesquisas repetíveis e facilita meu processo anual de definição de metas.

Vai
fonte
2

Agora que mudei para Sweave, nunca mais quero voltar. Especialmente se você tiver gráficos como saída, é muito mais fácil acompanhar o código usado para criar cada gráfico. Também facilita muito a correção de uma pequena coisa no início e a repercussão na saída sem precisar executar novamente nada manualmente.

Aaron - Restabelecer Monica
fonte
1
Sweave é maravilhoso. Demora um pouco para se acostumar, mas se você já conhece o TeX e o R, é a escolha óbvia. Também permite que você nunca gaste tempo alinhando as colunas da tabela novamente, o que é bom.
Richardorrisroe #
Obrigado pela contribuição. Minhas 2 preocupações com o Sweave são: 1) Acabarei com um zilhão de arquivos no meu diretório - especialmente com muitas figuras; e 2) Terei que ter muito cuidado com o código para evitar soluços sempre que compilar todo o documento (por exemplo, acho que algo está carregado e não está). Você tem esses problemas?
DQdlM
1) Você pode optar por excluir os arquivos intermediários, se desejar; Eu uso o script Sweave.sh ( cran.r-project.org/contrib/extra/scripts/Sweave.sh ) que faz isso automaticamente; embora possa ser facilmente desligado. Se você fizer isso, saiba o que será excluído antes de usá-lo para evitar um possível desastre. A versão curta é que, se nenhum arquivo compartilhar o nome de base do seu arquivo Rnw, você estará bem.
Aaron - Reinstate Monica
2) Na minha opinião, ter que tomar cuidado dessa maneira é uma coisa boa e, às vezes, compila meu documento Sweave com esse objetivo exato em mente, ou seja, para garantir que eu acompanhe adequadamente tudo o que é necessário para recriar o análise.
Aaron - Reinstate Monica
1
@ naught101: Para análises longas, eu o executo separadamente e salvo os resultados, geralmente em um .RDataarquivo, para entrada no documento Sweave. No entanto, também existem várias ótimas opções para "armazenar em cache" os resultados de um pedaço de código, para que não seja executado novamente.
Aaron - Reinstale Monica
2

Para estruturar arquivos de código .R únicos, você também pode usar strcode , um suplemento do RStudio que criei para inserir separadores de código (com títulos opcionais) e com base neles - para obter resumos dos arquivos de código. Eu explico o uso dele em mais detalhes nesta postagem do blog .

Lorenz Walthert
fonte