2012-08-15 4 views
5

Ho un frame di dati che passo ad un altro programma usando system(). Nella configurazione corrente, prima scrivo il contenuto del dataframe in un file di testo, quindi il comando system() cerca il file di testo creato.R passando il frame di dati ad un altro programma usando system()

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

Ho 2 domande:

1) C'è un modo per passare un dataframe direttamente senza scrivere il file di testo?

2) In caso contrario, è possibile passare i dati in memoria come un'entità formattata nel testo senza scrivere il file sul disco?

Grazie per eventuali suggerimenti.

+0

Quanto è lungo un tipico frame di dati? Un'opzione sarebbe quella di passare i dati come parametri al comando, ma penso che ciò che hai già fatto sia probabilmente più pulito. – blindjesse

risposta

7

È possibile scrivere su qualsiasi connessione di chiamate R e che include prese di rete.

Così il processo A può scrivere sulla rete, e il processo B può leggerlo senza alcun file su disco coinvolto, vedere help(connections) che ha anche un esempio funzionante nella sezione "Esempi".

L'argomento generale qui è la serializzazione e R lo fa per te. È anche possibile passare i dati in questo modo ad altri programmi utilizzando strumenti che codificano i metadati sulla struttura dei dati, come ad esempio i buffer di protocollo di Google (supportati in R dal pacchetto RProtoBuf).