Tengo una secuencia de comandos elaborada que abarca múltiples funciones (y archivos). Para fines de depuración necesito incrustar browser
llamadas en todo tipo de rincones y grietas. Cuando presumiblemente corrijo algo, quiero ejecutarlo todo sin depuración, evitando evitar las llamadas browser
porque comentar todas las llamadas al navegador significaría un esfuerzo considerable de mi parte. @mdsumner en R chat sugirió ejecutar el script en modo no interactivo (es decir, usando Rscript.exe en Windows), pero me beneficiaría que lo haga en mi consola, para poder acceder, por ejemplo, al traceback
. Revisé los documentos del navegador y no encuentro ninguna opción que se acerque a lo que estoy tratando de lograr. ¿Alguna sugerencia?evitando las llamadas al navegador en R
Respuesta
Éstos son tres possibliities:
1) Sobrescribir el comando del navegador. Añadir este comando a su espacio de trabajo global para convertir los comandos del explorador fuera:
browser <- list
y para volver a encenderla
rm(browser)
Este es probablemente el más fácil, pero es un poco feo debido a la browser
variable que se está dejado en el ambiente global.
Las siguientes dos soluciones son un poco más largas pero usan opciones para que no se introduzcan nuevas variables en el entorno global. También son tales que si no se configuran las opciones, entonces no se realiza la depuración, por lo que solo tiene que establecer una opción si desea depuración. La solución if
puede ser más rápida que la solución expr
, aunque es probable que no sea material.
2) Utilice expr = argumento con la opción. Reemplazar cada comando navegador con:
browser(expr = isTRUE(getOption("Debug")))
y luego definir la opción "Debug"
ser TRUE
a activar la depuración.
options(Debug = TRUE)
o configurarlo a otra cosa o quitarlo para activar la depuración de apagado:
options(Debug = NULL)
3) uso si con una opción. Reemplazar cada comando navegador con:
if (isTRUE(getOption("Debug"))) browser()
y luego establecer la opción Debug
o no como en el punto anterior.
Todos los buenos comentarios de Michael y Marek, pero estoy eligiendo este como el correcto, ya que tiene una visión general de tres métodos. –
Creo que esto solo se reduce al uso matizado de una función de depuración. Si desea controlar de forma selectiva el uso de browser()
, colóquelo dentro de un if
que le permite habilitar o deshabilitar la depuración de la función. Cuando desee navegador para ser llamado, hacen que explícita como
myfun(x, debug = TRUE)
Definir valor lógico mundial
debug_mode <- TRUE
y entonces en vez de browser()
uso
if (debug_mode) browser()
- 1. R: evitando summary.plm
- 2. R y llamadas al sistema
- 3. Evitando la muerte de un navegador desordenado
- 4. Bloquear llamadas R potencialmente dañinas
- 5. Generando un gráfico de llamadas en R
- 6. Cómo interceptar las llamadas al método dll?
- 7. Android abre el navegador desde el servicio evitando varias pestañas
- 8. R: Iniciar el navegador web
- 9. Llamadas al sistema en Windows
- 10. En .NET, ¿se optimizarán las llamadas al método vacío?
- 11. Llamadas de Ajax al subdominio
- 12. Evitando TIME_WAIT
- 13. ¿Encontrar todas las llamadas al Procedimiento almacenado de MySQL?
- 14. Cómo prohibir las llamadas al sistema, GNU/Linux
- 15. ¿Cuándo y cómo se interrumpen las llamadas al sistema?
- 16. ¿por qué son costosas las llamadas al sorteo?
- 17. ¿Cómo se interceptan las llamadas al método de instancia?
- 18. Comportamiento extraño de las llamadas al filtro apilado()
- 19. Debian para llamadas al sistema
- 20. ¿Configurando CultureInfo en llamadas al servicio wcf?
- 21. Rieles I18n: acortar las llamadas de traducción (al menos en las vistas)
- 22. ¿Cuáles son las posibles formas de interceptar las llamadas al sistema en entornos Unix?
- 23. Llamadas al método de captura en Java
- 24. Interceptar llamadas salientes al colgar
- 25. Evitando la reutilización de descriptores de archivos
- 26. Volviendo ZipOutputStream al navegador
- 27. Detectando el idioma del navegador y evitando la excepción de nullreference
- 28. Calcular las edades en R
- 29. diferencia entre las llamadas asíncronas y las llamadas asíncronas en io .net
- 30. ¿Qué son las llamadas en java?
Eche un vistazo a las respuestas a esta pregunta muy similar que se publicó recientemente: http://stackoverflow.com/q/6286092/602276 – Andrie
Utilizaré 'options (debug =" FALSE ")' y dentro de una función : 'if (options (" debug ")) browser()'. ¡Gracias! –
envuelve eso dentro de una definición de función llamada 'dbrowser' y reemplaza todas tus llamadas de navegador() con dbrowser() - en lugar de reemplazarlas con if (opciones) -browser two-liner. – Spacedman