2017-03-01 3 views
0

Ich habe sieben sehr ähnliche Datenteilmengen aus meiner Hauptdatenquelle, aufgeteilt von Daten1 zu Daten5. Wie kann ich eine for-Schleife erstellen, so dass alle Plots simultan erstellt werden, anstatt den Code unten zu kopieren und einzufügen und geringfügige Änderungen vorzunehmen.For-Schleife zum Erstellen mehrerer Plot-Sets mit geringfügigen Änderungen

par(mfrow=c(2,2)) 
hist(data1$value1, main=paste("Data 1 - Value 1 Histogram"), xlab="Value 1", col="lightblue", ylim=c(0,10), xlim=c(200,1000)) 
boxplot(data1$value1, varwidth = T, main=paste("Data 1 - Value 1 Box Plot"), xlab="Value 1", col="lightblue", horizontal=T, frame=F, ylim=c(200,1000)) 
hist(data1$value 2, main=paste("Data 1 - Value 2 Histogram"), xlab="Value 2", col="palegreen", ylim=c(0,10), xlim=c(30,50)) 
boxplot(data1$value 2, varwidth = T, main=paste("Data 1 - Value 2 Box Plot"), xlab="Value 2", col="palegreen", horizontal=T, frame=F, ylim=c(30,50)) 

Hinweis: die einzigen Werte, die ich brauchen würde, von 1 zu ändern: 5

hist(data[n]$value1/value2, main=paste("Data [n] - Value 1/Value 2 histogram/box plot") 

sowie die ylim und Xlim Werte wären die Skala anpassen. Ich kann wählen, die gleiche Skala überall zu verwenden, obwohl einige Diagramme nicht klar sein werden, oder ich könnte die Standardwerte verwenden, die ich vermute.

Antwort

0

Speichern der fünf Datensätze innerhalb einer list, da es einfach zu iterieren ist. Sie müssen auch Code hinzufügen, um die Plots wie gewünscht zu erfassen.

for (i in seq_along(lst)) { 
    par(mfrow=c(2,2)) 
    with(lst[[i]], { 
    hist(value1, main=sprintf("Data %i - Value 1 Histogram", i), xlab="Value 1", col="lightblue", ylim=c(0,10), xlim=c(min(value1), max(value1))) 
    boxplot(value1, varwidth = TRUE, main=sprintf("Data %i - Value 1 Box Plot", i), xlab="Value 1", col="lightblue", horizontal=TRUE, frame=FALSE, ylim=c(min(value1), max(value1))) 
    hist(value2, main=sprintf("Data %i - Value 2 Histogram", i), xlab="Value 2", col="palegreen", ylim=c(0,10), xlim=c(min(value2), max(value2))) 
    boxplot(value2, varwidth = TRUE, main=sprintf("Data %i - Value 2 Box Plot", i), xlab="Value 2", col="palegreen", horizontal=TRUE, frame=FALSE, ylim=c(min(value2), max(value2))) 
    }) 
    # add code to capture plots as desired 
} 
Verwandte Themen