Pergunta

Como posso Rscripts de depuração que são executados a partir da linha de comando?

Atualmente, estou usando o pacote getopt para passar opções de linha de comando, porca, quando há um erro, é difícil para mim:

  1. ver exatamente o que deu errado;
  2. depuração interativa em R (desde que os espera script de comando Opções de linha.)

Alguém tem código de exemplo e dispostos a partilhar?

Foi útil?

Solução

Você poderia passar seus argumentos de linha de comando em um shell interativo com --args e depois de origem ( '') o script.

$ R --args -v

R version 2.8.1 (2008-12-22)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> require(getopt)
Loading required package: getopt
> opt = getopt(c(
+ 'verbose', 'v', 2, "integer"
+ ));
> opt
$verbose
[1] 1
> source('my_script.R')

Você pode agora usar o velho navegador () para depuração.

Outras dicas

I use instruções de impressão da velha escola, ou análise interativa. Para isso, eu primeira gravação estado usando save() e coloque isso em uma sessão interativa (para o qual eu uso Emacs / ESS). Que permite o trabalho interativo usando o código de script numa base de linha por linha.

Mas muitas vezes eu escrever / test / depurar o código no modo interativo antes de implantar em um script littler.

Outra opção é trabalhar com as opções de funcionalidade (erro). Aqui está um exemplo simples:

options(error = quote({dump.frames(to.file=TRUE); q()}))

Você pode criar elaborar um script como você quer em uma condição de erro, então você deve apenas decidir quais informações você precisa para depuração.

Caso contrário, se existem áreas específicas que você está preocupado com (por exemplo, se conectar a um banco de dados), em seguida, envolvê-los em uma função tryCatch ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top