Tengo una secuencia de comandos R, que tiene argumentos de línea de comandos, en los que la línea superior es:R Cambiar la escritura de no interactivo a interactiva
#!/usr/bin/Rscript --slave
que quería interrumpir la ejecución de una función (por lo que puede de forma interactiva use las variables de datos que se han cargado en ese punto para calcular el siguiente bit de código que necesito escribir). Agregué esto dentro de la función en cuestión:
browser()
pero se ignora. Un poco de búsqueda sugiere que podría ser porque el programa se está ejecutando en modo no interactivo. Pero aún más búsquedas no han rastreado cómo cambio el script fuera del modo no interactivo para que el navegador() funcione. Algo así como una función browser_yes_I_really_mean_it()
.
P.S. Quiero evitar alterar el resto del script si es posible. Mi enfoque actual es copiar y pegar los fragmentos de código, necesarios para preparar los datos, en una sesión interactiva; pero a medida que el guión se vuelve más y más complejo, esto se vuelve cada vez más irrazonable.
ACTUALIZACIÓN: para cualquier persona con la misma pregunta, parece que la respuesta a la pregunta real es que es imposible. Una vez que inicie R en un modo no interactivo, se arrojará el dado. Las respuestas dadas son, por lo tanto, soluciones temporales: o pirateas tu código (recuerdes deshacerte después) o refactorizas para facilitar la depuración. (Este comentario no pretende ser una crítica de las respuestas; la refactorización sugerida hace que el código sea más limpio de todos modos)
interrupción realmente función compleja? Si se trata de varias funciones, puede hacer lo que mdsumner sugiere a continuación y buscar un conjunto de secuencias de comandos dentro de otra. Luego, después de cada punto de interrupción razonable, escriba los datos en el disco. – Maiasaura
Creo que estás tratando de ir en contra de la lógica fundamental aquí. Tu línea superior significa 'lo que dice el guión, no interactúas'. Ese es todo el punto. Cambia esa línea, ¿qué tan difícil puede ser? – reinierpost
@reinierpost Gracias, aunque la interpretación de 'Rscript --slave' parece no documentada. La página man simplemente dice '--slave' es para silenciarla. ¿Pero a qué cambiarlo? Cuando uso simplemente 'Rscript' por sí mismo,' 'browser()' se activa pero sale del script, sin darme una sesión interactiva. –