2011-05-13 17 views
26

Quiero buscar en rcpp para mejorar la velocidad de algunos de mis códigos R sin tener que recurrir al desordenado código C++ (he tenido cierto éxito con eso, pero parece código del infierno).Documentación básica para Rcpp

Así que, verifiqué la documentación proporcionada con Rcpp, y también el paquete de documentos proporcionado en Dirk Eddelbuettel's site. Instalé y miré RcppExamples, pero (al menos desde su documentación) la mayoría de estos se refieren a RcppClassic. Además de eso, hice algunas búsquedas en Google, pero eso no dio como resultado respuestas a lo que parecen ser preguntas básicas.

  • Haz índices en RCPP trabajo basado en cero o uno basado-
  • Lista proporciona tanto operator() y operator[], pero al parecer no operator[[]]. No está claro qué son similares a [] y [[]] en R.
  • ¿Existe algún soporte para los factores en Rcpp (no parece haber ninguno)?

Nota: de hecho, encontré algunas respuestas del primer ejemplo en Rcpp-introduction.pdf, pero me pareció una suerte.

Además, mi stl está muy oxidado, por lo que si alguien me puede dar un ejemplo simple donde cada elemento de una lista es (por ejemplo) print -ed con un estilo stl, eso sería perfecto.

Si alguien quiere llamarme idiota por no encontrar esta información: adelante y haga su día. Luego haga los míos y apúnteme a los documentos que necesito :-)

Como una sugerencia para el Sr. Eddelbuettel y otros autores de Rcpp (espero que algunos de ellos lean esto): las jerarquías de clase y similares, proporcionadas por doxygen , están realmente bien cuando ya estás metido en Rcpp, pero para un principiante (en Rcpp), estoy más interesado en una lista de 'este método en esta clase hace esto como esa función en R' en lugar de 'puedes encontrar el declaración de este operador en este archivo de encabezado '. Después de todo, entiendo que uno de los objetivos de Rcpp es reducir el umbral para usar C++ en R? Nota: por lo que he visto y entendido, valoro mucho el código real de Rcpp y tengo el mayor respeto por sus creadores. Si la falta de documentación básica es simplemente el resultado de la "falta de recursos", estaría dispuesto a convertirme en un recurso (por ejemplo, trabajar en la documentación "básica" una vez que lo haya superado).

+0

los índices están basados ​​en cero. Aunque este es fácil de descubrir escribiendo un código simple. – mpiktas

+2

Probablemente obtendrá respuestas más rápidas publicando en la [lista de distribución de Rcpp-devel] (https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel). –

+0

@mpiktas: estoy de acuerdo. Esta es la parte que encontré en el primer ejemplo en Rcpp-introduction. El punto es: no debería tener que hacerlo, ya que el objetivo de Rcpp es probablemente bajar la barra. Estoy luchando mucho para descubrir qué es y qué no está en Rcpp (¿listas? ¿Factores? Data.frames?) @Joshua: volveré a publicar allí. –

Respuesta

20

yo no sé muy bien por dónde empezar respondiendo a esto, pero aquí es un intento rápido:

  • El paquete tiene un sitio web. El sitio web enumera la documentación.

  • El paquete tiene ocho (8) viñetas. Ellos están claramente listados. En su mayoría están destinados a leerse como documentación, algunos más introductorios y otros más avanzados. Algunos (como la salida de prueba de la unidad) son más una iniciativa de control de calidad.

  • Hay una viñeta llamada Rcpp-introduction. Nos referimos a esto repetidamente. Sugerimos que lo leas. Esto también es ahora un peer-reviewed and published paper que puede otorgarle aún más credibilidad.

  • Hay una viñeta llamada Rcpp-FAQ.Es primera pregunta es "¿Cómo empiezo?" que apunta a la introducción de Rcpp antes mencionada.

  • Hay una lista de correo dedicada al proyecto, puede leer el archivo.

  • Hemos ofrecido numerosas charlas, hay diapositivas disponibles, como una grabación de 90 minutos de Google Tech Talk.

  • Incluso StackOverflow tiene una etiqueta para él: [rcpp]. Podrías leer las publicaciones anteriores.

  • Hay más de dos docenas de paquetes claramente enumerados en la página CRAN para que Rcpp lo use. Podrías leer su código fuente.

Dicho todo esto, RCPP no se puede utilizar en lugar de C++ por lo que si usted no sabe o no entiende que operator[[]] no puede existir en C++ no podemos ayudar a cualquiera. Esto no es un hada mágica, o un compilador de código R-to-C++. Más bien, su enfoque es facilitar mucho el acceso al código C++ desde R, y en algunos casos incluso logra mejorar la práctica de C++. En esencia, trata de ser "súper aditivo": la combinación R y C++ debe ser más que aisladamente.

Por último, le garantizo que los paquetes RcppExamples, que por cierto cubren la API anterior y la nueva, podrían usar más ejemplos. Sin embargo, sus sourecs dan buenos consejos de portabilidad desde antiguo ("clásico") a API nueva y actual.

Pero solo hay mucha documentación que podemos escribir nosotros mismos. Yo mismo encuentro los puntos anteriores bastante exhaustivos. Sin embargo, es posible que hayas afinado el elemento más débil de la cadena. Eso es mala suerte. Por favor, intente con algunos de los otros indicadores que se enumeran aquí.

+9

Como mencioné en mi pregunta, he comprobado las primeras cuatro balas y vine hasta vacio. Aparentemente, Google (con mis términos de búsqueda, incluida rcpp) no me lleva a los archivos de la lista de correo. Incluso entonces, las listas de correo y similares no son un reemplazo para la documentación (que, como también indiqué, estoy dispuesto a comenzar a escribirme, si alguna vez supero mis propios obstáculos). FYI: Sé que [[]] no existe en C++. Si desea abogar por su hermoso proyecto, proporcione documentos interinos sobre lo que puede hacer con él (en particular: listas y marcos de datos necesitan trabajo). Para nosotros tontos. –

+4

Bueno, encuéntrame (o Romain) financiación equivalente a un trabajo de día completo y podemos escribir más documentación. Alguien tiene que alimentar al gato y pagar el alquiler. –

+7

O haz lo que Christian hace tan bien con Rcpp-quickref: envíanos parches! Si tiene una opinión sólida sobre dónde falta la documentación, o si estaría mejor ubicada: ¡haga su caso con un parche! –

Cuestiones relacionadas