2017-06-14 3 views
0

Ich habe eine große R-Datei, die ich verwenden werde, um zehn Dateien zu analysieren, die den zehn Themen entsprechen, die ich in meiner Studie durchgeführt habe. Lassen Sie uns sagen, dass die zehn Datendateien sub1.csv genannt werden, sub2.csv usw.Wie gibt man verschiedene Dateien mit einem Makro aus?

Die R-Datei gibt ein paar Tische in csv Format und einige Diagramme in PDF Format (etwa zehn bis fünfzehn Ausgaben insgesamt).

Sobald ich habe alle Ausgänge ich brauche sie zu vergleichen, so wäre es schön, jede Ausgabedatei nach dem Thema genannt zu haben, zum Beispiel:

graph1_sub1.pdf 
graph2_sub1.pdf 
table1_sub1.csv 

und so weiter für alle Dateien für jeden Gegenstand.

Ich frage mich, was ist der beste Workflow, um alle Ausgabedateien zu erhalten, die nach jedem Thema benannt sind?

Ich dachte über das Erstellen von zehn verschiedenen R-Dateien, aber dann muss ich die Namen der Ausgabedateien für jedes einzelne Thema neu schreiben (obwohl mit der Suchfunktion sollte es nicht lange dauern). Ich habe mich gefragt, ob es einen besseren Weg gibt, vielleicht mit einem Makro.

+0

Diese Frage hat nicht genug Details, um eine wirklich gute Antwort zu geben, aber es ist möglich, Dateien in einer Schleife zu schreiben. Eine Sache, die ich am Ende getan habe, besteht oft darin, Daten auf verschiedene Arten zu untervermieten und Plots zu erstellen oder die Daten zu exportieren. Sie können i% in% durchlaufen (# von Dateien) und dann die Dateinamen wie paste0 einfügen ("graph1 _", ich, ". Pdf") – svenhalvorson

+0

Danke, also meinst du, ich sollte so etwas wie eine for-Schleife machen, Looping über die gesamte R-Datei? Könntest du bitte den Code der ersten Zeile der for-Schleife schreiben, ich habe verstanden, was du meinst, aber ich bin mir nicht 100% sicher. – Nottolina

+0

Hier ist ein Start: 'für (i in Namen (x)) { write_csv (x [[i]], paste0 (i," file.csv "), col_names = FALSCH) }' –

Antwort

1

Wie pro Ihre Anfrage, hier ist ein Beispiel für Grundstücke und Export durch eine Schleife zu erzeugen:

for(s in unique(iris$Species)){ 

    temp = iris[iris$Species == s,] 

    pdf(file = paste0(s,"_width_hist.pdf")) 
    hist(temp$Sepal.Width) 
    dev.off() 

    pdf(file = paste0(s,"_length_hist.pdf")) 
    hist(temp$Sepal.Length) 
    dev.off() 

    write.csv(x = temp, file = paste0(s,".csv"), row.names = FALSE) 
} 

Dies ist auf jeden Fall einfacher als das, was Sie tun, aber Sie können Verwendung Schleifen wie diese Dateien zu erzeugen, . Eine andere Option wäre, eine Funktion zu schreiben, die die gesamte gewünschte Ausgabe aus einem Datensatz generiert und lapply verwendet, um sie auf allen Datensätzen auszuführen.

Verwandte Themen