2010-08-02 10 views
16

He incluido una biblioteca llamada "blotter" en mi script R que tiene un error. ¿Hay alguna manera fácil de editar la fuente para intentar solucionar el problema?Cómo editar y depurar fuentes de la biblioteca R

+1

Posible duplicado de [r modificar y reconstruir el paquete] (https://stackoverflow.com/questions/34800331/r-modify-and-rebuild-package) – Scarabee

Respuesta

16

Busque las funciones trace y browser, son las herramientas básicas en R para la depuración. Digamos que quiere editar el código fuente de la función foo, a continuación, diciendo

trace("foo",edit=TRUE) 

abrirá la fuente de foo en el editor para que usted cambie. Sin embargo, esto es para la depuración interactiva; los archivos fuente en los paquetes no son cambiados. Entonces, una vez que haya encontrado el error, necesita cambiar los archivos fuente del paquete para que el cambio sea permanente.

+0

hola! He descargado un paquete y sé cuál es la función que tengo que editar; simplemente no puedo encontrarlo entre todos los archivos. ¿Cuál es la forma correcta de estar haciendo esto? ¿Podrías apuntarme en la dirección correcta? – vagabond

9

Esta característica se implementa en la versión de desarrollo de R (16 Jul 2010):

Una nueva instalación ha sido añadido a la r-devel para experimentar por los autores de paquetes.

La idea es insertar código modificado del origen del paquete en el paquete en ejecución sin volver a instalar. Entonces uno puede cambiar, probar, cambiar, etc. en un bucle rápido.

El mecanismo consiste en evaluar algunos archivos del código fuente, devolviendo un objeto de entorno que es una instantánea del código. Desde este entorno , las funciones y los métodos se pueden insertar en el entorno del paquete en la sesión actual. La inserción utiliza el mecanismo trace() , por lo que se puede restaurar el código original.

La versión de un solo paso es:

insertSource("mySourceFile.R", package = "myPackage", functions = "foo")

Ver este post para más detalles: Inserting and testing revised functions in a package

3

Su pregunta de ¿Hay una manera fácil para que corrija la fuente de intentar y solucionar el problema? tiene la respuesta obvia: Use la fuente, Luke!

blotter es un paquete en R-Forge desde donde puede obtener blotter sources here. Esa es la forma estándar de mirar Open Source y posiblemente ayudarlo junto con una corrección de errores.

+1

Ok, ¿cómo hago eso? Normalmente puedo simplemente llamar a 'biblioteca', lo que supongo que no podría hacer con las fuentes. Descargué la fuente, pero hay casi 40 archivos. ¿Ejecuto 'fuente' en cada uno de ellos individualmente para ponerlos en mi script? –

+3

@Ben McCann Suponiendo que no hay un código C o FORTRAN, puede extraer los archivos R, 'source()' y trabajar desde allí (cada vez que cambie el archivo, debe obtenerlo o copiarlo/pegarlo en R). Una vez que tenga todo funcionando, puede copiar los archivos nuevamente al paquete binario y compilarlo. He descrito un paquete R rápido paso a paso en una publicación de blog aquí: http://danganothererror.wordpress.com/2010/07/23/building-an-r-package-under-windows-without- cc-o-fortran-code/ –

Cuestiones relacionadas