2012-08-15 14 views
5

Tengo un marco de datos que paso a otro programa usando system(). En la configuración actual, primero escribo los contenidos del marco de datos en un archivo de texto, luego hago que el comando system() busque el archivo de texto creado.R pasando el marco de datos a otro programa usando el sistema()

df1 <- runif(20) 
write(df1, file="file1.txt") 
system("myprogram file1.txt") 

tengo 2 preguntas:

1) ¿Hay una manera de pasar una trama de datos directamente sin necesidad de escribir el archivo de texto?

2) De lo contrario, ¿hay forma de pasar los datos en la memoria como una entidad con formato de texto sin escribir el archivo en el disco?

Gracias por cualquier sugerencia.

+0

¿Cuánto dura un marco de datos típico? Una opción sería pasar los datos como parámetros al comando, pero creo que lo que ya has hecho es probablemente más limpio. – blindjesse

Respuesta

7

Puede escribir en cualquier cosa R llama a las conexiones, y eso incluye los enchufes de red.

De modo que el proceso A puede escribir en la red, y el proceso B puede leerlo sin ningún archivo en disco, ver help(connections) que incluso tiene un ejemplo de trabajo en la sección "Ejemplos".

Su tema general aquí es la serialización, y R lo hace por usted. También puede pasar datos de esa manera a otros programas usando herramientas que codifican metadatos sobre su estructura de datos, como por ejemplo, los Buffers de Protocolo de Google (soportados en R por el paquete RProtoBuf).

Cuestiones relacionadas