2016-08-04 22 views
0

Ich habe eine Funktion, rufen Sie a(), schreibt etwas in eine Datei und eine andere Funktion, rufen Sie b(), die etwas aus einer Datei liest. Ich würde gerne die Ausgabe von a() pipe und es in b() pipe ohne eine Datei jemals tatsächlich erstellt werden. Ist das möglich?Pipe-Ausgabe zu Datei zu Funktion

(für Neugierige: a() ist aws.s3::save_object(), die auf der Festplatte ein Objekt aus einer S3-Bucket speichert und b() ist feather::read_feather(), die in eine tibble in einer Feder-Datei liest.)

+0

Können Sie get_object() von aws.s3 nur das Objekt von S3 erhalten zu Arbeitsbereich? –

+0

Und wie würde ich das dann durch 'read_feather()' füttern? – RoyalTS

+0

Was versuchst du genau zu machen? Sie sollten keine Datei speichern und in R einlesen müssen. –

Antwort

1

Der Rückgabewert von save_object() a Datei Zeichenfolge den Pfad der gespeicherten Datei enthalten, so können Sie einfach Ihre Nest-Funktion aufruft:

library("aws.s3") 
library("feather") 
read_feather(save_object("objectkey", "bucket")) 

wenn Feder der Lage ist, aus einer Verbindung von Lesen (scheint, wie es nicht ist, aber wenn es könnte), Sie kann die Datenträger-E/A überspringen und stattdessen get_object() verwenden:

read_feather(rawConnection(get_object("objectkey", "bucket"))) 

(Anmerkung: Ich bin der Maintainer des aws.s3 Paket.)