No pude encontrar documentación para esto. Parece que el código fuente R usa NewEnvironment
y R_NewHashedEnv
, pero ninguno de ellos está en los encabezados públicos, por lo que parece que no están disponibles para mí como usuario. ¿Qué función (o qué líneas de código) debo usar para generar un nuevo ENVSXP?¿Cómo se puede crear un nuevo entorno R desde C?
Respuesta
¿Quieres allocSExp
:
/* C code in foo.c */
#include "Rinternals.h"
SEXP foo() {
SEXP res = allocSExp(ENVSXP);
return res;
}
> # R code (after running R CMD SHLIB foo.c)
> dyn.load("foo.dll")
> .Call("foo")
<environment: 0x016a4084>
¿Por qué no un forro de uno o dos usando [en línea] (http://cran.r-project.org/package=inline)? Además, asigna, ¿no necesita PROTEGER/DESPROTECTAR? –
@DirkEddelbuettel: es triste decirlo, no uso en línea habitualmente (F- para mí). No llamo a ninguna macro después de la asignación en este ejemplo simple, por lo que no hay posibilidad de otra asignación (y GC potencial) antes de que mi función finalice. Debería haber sido más explícito sobre eso. –
Claramente, es un caso en el que intento demasiado. Ahí estaba buscando algún tipo de función allocEnv, cuando la asignación más básica de SEXP era todo lo que necesitaba. [Y sí, agregué las macros de Yelly apropiadas]. Obtiene puntos de bonificación si puede dirigirme a la documentación que describe el uso de funciones como allocSExp ... –
- 1. Crear un nuevo entorno en Rails
- 2. ¿Cómo crear un nuevo entorno en Ruby on Rails?
- 3. Java: no se puede crear un nuevo hilo nativo
- 4. Fstream no puede crear un nuevo archivo
- 5. redefinición de comandos en un nuevo entorno
- 6. ¿En qué casos se debe usar new.env para crear un nuevo entorno?
- 7. C# Crear nuevo T()
- 8. Cómo crear un nuevo ALAsset desde la imagen descargada
- 9. R no se puede resolver a una variable en un nuevo proyecto
- 10. Problema al crear un nuevo entorno que inicia/finaliza otro entorno
- 11. ¿Cómo crear un entorno personalizado en Grails?
- 12. Rails 3 - ¿Cómo se crea un nuevo registro desde link_to
- 13. getResourceAsStream falla en un entorno nuevo?
- 14. Cómo crear un sonido desde cero C#
- 15. ¿Cómo crear un entorno de escritorio simple?
- 16. Llamar .NET/C# desde R
- 17. Crear un nuevo repositorio git desde una sucursal local existente
- 18. mover un marco, depurar el entorno R
- 19. ¿Cómo puedo crear un entorno seguro Lua?
- 20. ¿Cómo puedo crear un nuevo método de vínculos con la función R rank()?
- 21. R: ¿Cómo crear un vector de funciones?
- 22. java.lang.OutOfMemoryError: no puede crear nuevo hilo nativa
- 23. R: búsqueda de entorno
- 24. Cómo crear un entorno limitado en C# para un proceso externo?
- 25. Cómo crear un indicador de entorno JNI estático?
- 26. ¿Cómo se puede omitir para un nuevo tipo?
- 27. Cómo crear un nuevo usuario en AWS
- 28. R: copiar/mover un entorno a otro
- 29. nuevo y eliminar en una biblioteca C++ que se llama desde un programa en C
- 30. ¿Cómo crear un archivo DBF desde cero en C#?
Si permite que para C++, yo puedo mostrar cómo hacerlo a través de RCPP. –