Frage

Ich bin mit R einer Schleife durch einen Datenrahmen, eine Berechnung durchführen und einen Plot zu machen.

for(i in 2 : 15){
# get data
dataframe[,i]  

# do analysis

# make plot
a <- plot()
}

Gibt es eine Möglichkeit, dass ich den Plot Objektnamen machen kann ‚a‘, den Wert von ‚i‘ mit? Zum Beispiel kann ein + "i" <- Plot (). Dann mag ich, dass auf einen Vektor hinzuzufügen, so dass ich eine Reihe von Diagrammen, die ich dann zu einem späteren Zeitpunkt verwenden kann, wenn ich eine pdf machen will. Oder vielleicht gibt es einen anderen Weg, dies zu speichern.

Ich bin mit der Paste () Funktion vertraut, aber ich habe nicht herausgefunden, wie ein Objekt zu definieren, es zu benutzen.

War es hilfreich?

Lösung

Wenn Sie einen „Vektor“ von Plot Objekte wollen, ist der einfachste Weg, sie wahrscheinlich in einem list zu speichern. Verwenden Sie paste() einen Namen für das Grundstück zu erstellen und fügen Sie dann in die Liste:

# Create a list to hold the plot objects.
pltList <- list()

for( i in 2:15 ){

  # Get data, perform analysis, ect.

  # Create plot name.
  pltName <- paste( 'a', i, sep = '' )

  # Store a plot in the list using the name as an index.
  # Note that the plotting function used must return an *object*.
  # Functions from the `graphics` package, such as `plot`, do not return objects.
  pltList[[ pltName ]] <- some_plotting_function()

}

Wenn Sie wollte nicht die Plots in einer Liste speichern und buchstäblich wollte ein neues Objekt erstellen, die den Namen in pltName enthalten hatte, dann könnte man assign() verwenden:

# Use assign to create a new object in the Global Environment
# that gets it's name from the value of pltName and it's contents
# from the results of plot()
assign( pltName, plot(), envir = .GlobalEnv )

Andere Tipps

Haben Sie einen Blick auf die Pakete lattice oder ggplot2, die Plotfunktionen in diesen Paketen erstellen Objekte, die Variablen zugewiesen werden kann und zu einem späteren Zeitpunkt gedruckt oder geplottet werden.

Zum Beispiel mit lattice:

library("lattice")
i <- 1
assign(sprintf("a%d", i), xyplot(1:10 ~ 1:10))
print(a1) # you have to "print" or "plot" the objects explicitly

oder die Objekte in einer Liste anfügen:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top