(+1) @caracal, de alguma forma perdeu essa opção :) não há necessidade de colocar printno arquivo de origem, a menos que alguma saída não seja interessante.
Dmitrij Celov
Respostas:
16
Você pode usar o depurador interno do R; deve ser acionado em uma função, portanto, é necessário um pequeno invólucro:
sourceDebugging<-function(f){#Function to inject the code to
theCode<-function(){}#Injection
parse(text=c('{',readLines(f),'}'))->body(theCode)#Triggering debug
debug(theCode)#Lift-off
theCode()}
sourceDebugging(<file with code>)
Isso é bastante útil para depuração (dá a você a chance de inspecionar o estado após cada linha), no entanto, será avaliado apenas em um ambiente novo, e theCodenão sourceno padrão .GlobalEnv... isso significa, por exemplo, que as variáveis criadas dentro desaparecerão, a menos que globalmente explicitamente.
A opção dois é apenas emular a escrita do teclado e pressionar ENTER ... mas como caracal apontou, isso pode ser alcançado apenas com source(<file with code>,echo=TRUE).
(+1) também é recomendável para gravar os arquivos de origem como as funções e, em seguida, debug()browser()são úteis :)
Dmitrij Celov
1
Também baunilha, mostra como um comando executar linha por linha R-2.12 --vanilla <yourfile.R
user4581
1
algum método para passar também parâmetros?
GC5
Parece que os números são deslocados em 1 devido à definição da função. Existe uma maneira inteligente de contornar isso?
irritable_phd_syndrom
10
Abra o arquivo de script dentro do seu RGui e pressione Ctrl + R para executar linha por linha (você precisa pressionar várias vezes;)). No entanto, eu recomendaria usar o RStudio para o trabalho conveniente com R. Nesse caso, você executa a linha com Ctrl + Enter . Ou você pode modificar seu script para print()(ou cat()) os objetos.
source("arrFile.R", echo=TRUE)
?print
no arquivo de origem, a menos que alguma saída não seja interessante.Respostas:
Você pode usar o depurador interno do R; deve ser acionado em uma função, portanto, é necessário um pequeno invólucro:
Isso é bastante útil para depuração (dá a você a chance de inspecionar o estado após cada linha), no entanto, será avaliado apenas em um ambiente novo, e
theCode
nãosource
no padrão.GlobalEnv
... isso significa, por exemplo, que as variáveis criadas dentro desaparecerão, a menos que globalmente explicitamente.A opção dois é apenas emular a escrita do teclado e pressionar ENTER ... mas como caracal apontou, isso pode ser alcançado apenas com
source(<file with code>,echo=TRUE)
.fonte
debug()
browser()
são úteis :)Abra o arquivo de script dentro do seu RGui e pressione Ctrl + R para executar linha por linha (você precisa pressionar várias vezes;)). No entanto, eu recomendaria usar o RStudio para o trabalho conveniente com R. Nesse caso, você executa a linha com Ctrl + Enter . Ou você pode modificar seu script para
print()
(oucat()
) os objetos.fonte