Hola, Estoy creando un paquete de R que incluye código C++. Lo he instalado tanto en Linux (Fedora) como en Windows y todo funciona correctamente. El código C++ lo cargo desde el NAMESPACE utilizando useDynLib. Así que ahora estoy revisándolo por última vez antes de someterlo al CRAN. Lo que pasa es que he leído en http://cran.r-project.org/doc/manuals/R-exts.html#Writing-portable-packages lo siguiente: ?It is not portable to call compiled code in R or other packages via Internal, .C, .Fortran, .Call or .External, since such interfaces are subject to change without notice and will probably result in your code terminating the R process?. Sin embargo, la función del paquete que quiero someter llama al código C++ mediante .Call. ¿Significa esto que no puedo someter el paquete al CRAN porque la portabilidad del paquete no está asegurada?. De todos modos, ¿alguien sabe cómo podría llamar al código C++ para que el paquete fuese seguro portable?. He escrito también a la lista de R-devel por si me comentaran algo, en cuyo caso, mandaría un correo a nuestra lista con la información, por si a alguien le puede servir. Muchas gracias de antemano. Saludos, Guillermo
Hola, ¿qué tal? Creo que ese comentario no se refiere al código compilado de tu paquete sino a código compilado por otros que quieras usar en tu paquete. Pero igual me equivoco. No obstante, en el código de rpart (rpart.R) hay una llamada a C_rpart (en C) usando .Call. Y se trata de un paquete mantenido por el prof. Ripley, que ejerce de cancerbero en CRAN. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 6 de junio de 2013 16:43, <Guillermo.Vinue en uv.es> escribió:> Hola, > > Estoy creando un paquete de R que incluye código C++. Lo he instalado > tanto en Linux (Fedora) como en Windows y todo funciona correctamente. > El código C++ lo cargo desde el NAMESPACE utilizando useDynLib. > > Así que ahora estoy revisándolo por última vez antes de someterlo al > CRAN. Lo que pasa es que he leído en > > http://cran.r-project.org/doc/manuals/R-exts.html#Writing-portable-packages > > lo siguiente: > > ?It is not portable to call compiled code in R or other packages via > Internal, .C, .Fortran, .Call or .External, since such interfaces are > subject to change without notice and will probably result in your code > terminating the R process?. > > Sin embargo, la función del paquete que quiero someter llama al código > C++ mediante .Call. > > ¿Significa esto que no puedo someter el paquete al CRAN porque la > portabilidad del paquete no está asegurada?. De todos modos, ¿alguien > sabe cómo podría llamar al código C++ para que el paquete fuese seguro > portable?. > > He escrito también a la lista de R-devel por si me comentaran algo, > en cuyo caso, mandaría un correo a nuestra lista con la información, por > si a alguien le puede servir. > > Muchas gracias de antemano. > > Saludos, > > Guillermo > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola Carlos, Muchas gracias por tu respuesta. Pues sí, le he estado echando un ojo al paquete rpart y como dices, sí que usa la función .Call y tratándose del profesor Ripley tiene que ser lo que tú dices. De momento en la lista R-devel no me han contestado. Saludos, Guillermo> Hola, ¿qué tal? > > Creo que ese comentario no se refiere al código compilado de tu > paquete sino a código compilado por otros que quieras usar en tu > paquete. Pero igual me equivoco. > > No obstante, en el código de rpart (rpart.R) hay una llamada a C_rpart > (en C) usando .Call. Y se trata de un paquete mantenido por el prof. > Ripley, que ejerce de cancerbero en CRAN. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 6 de junio de 2013 16:43, <Guillermo.Vinue en uv.es> escribió: > > Hola, > > > > Estoy creando un paquete de R que incluye código C++. Lo he instalado > > tanto en Linux (Fedora) como en Windows y todo funciona correctamente. > > El código C++ lo cargo desde el NAMESPACE utilizando useDynLib. > > > > Así que ahora estoy revisándolo por última vez antes de someterlo al > > CRAN. Lo que pasa es que he leído en > > > >http://cran.r-project.org/doc/manuals/R-exts.html#Writing-portable-packages> > > > lo siguiente: > > > > ?It is not portable to call compiled code in R or other packages via > > Internal, .C, .Fortran, .Call or .External, since such interfaces are > > subject to change without notice and will probably result in your code > > terminating the R process?. > > > > Sin embargo, la función del paquete que quiero someter llama al código > > C++ mediante .Call. > > > > ¿Significa esto que no puedo someter el paquete al CRAN porque la > > portabilidad del paquete no está asegurada?. De todos modos, ¿alguien > > sabe cómo podría llamar al código C++ para que el paquete fuese seguro > > portable?. > > > > He escrito también a la lista de R-devel por si me comentaran algo, > > en cuyo caso, mandaría un correo a nuestra lista con la información, por > > si a alguien le puede servir. > > > > Muchas gracias de antemano. > > > > Saludos, > > > > Guillermo > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >
Hola, Me han contestado muy amablemente también desde la lista R-devel y en resumen me dicen lo que ya ha comentado Carlos: que el comentario que leí se refiere sólo a código C de otros paquetes o de la propia estructura interna de R. Por lo tanto, sí que es posible utilizar la función .Call para llamar a código C de tu propio paquete, pero no se recomienda utilizarla para llamar a código C de otros paquetes o del propio R. Saludos, Guillermo> Hola, ¿qué tal? > > Creo que ese comentario no se refiere al código compilado de tu > paquete sino a código compilado por otros que quieras usar en tu > paquete. Pero igual me equivoco. > > No obstante, en el código de rpart (rpart.R) hay una llamada a C_rpart > (en C) usando .Call. Y se trata de un paquete mantenido por el prof. > Ripley, que ejerce de cancerbero en CRAN. > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 6 de junio de 2013 16:43, <Guillermo.Vinue en uv.es> escribió: > > Hola, > > > > Estoy creando un paquete de R que incluye código C++. Lo he instalado > > tanto en Linux (Fedora) como en Windows y todo funciona correctamente. > > El código C++ lo cargo desde el NAMESPACE utilizando useDynLib. > > > > Así que ahora estoy revisándolo por última vez antes de someterlo al > > CRAN. Lo que pasa es que he leído en > > > >http://cran.r-project.org/doc/manuals/R-exts.html#Writing-portable-packages> > > > lo siguiente: > > > > ?It is not portable to call compiled code in R or other packages via > > Internal, .C, .Fortran, .Call or .External, since such interfaces are > > subject to change without notice and will probably result in your code > > terminating the R process?. > > > > Sin embargo, la función del paquete que quiero someter llama al código > > C++ mediante .Call. > > > > ¿Significa esto que no puedo someter el paquete al CRAN porque la > > portabilidad del paquete no está asegurada?. De todos modos, ¿alguien > > sabe cómo podría llamar al código C++ para que el paquete fuese seguro > > portable?. > > > > He escrito también a la lista de R-devel por si me comentaran algo, > > en cuyo caso, mandaría un correo a nuestra lista con la información, por > > si a alguien le puede servir. > > > > Muchas gracias de antemano. > > > > Saludos, > > > > Guillermo > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >