Pregunta

Estoy usando R para recorrer un marco de datos, realizar un cálculo y hacer un diagrama.

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

# do analysis

# make plot
a <- plot()
}

¿Hay alguna forma de que pueda hacer que el nombre del objeto de trazado sea 'a', usando el valor de 'i'? Por ejemplo, a + & Quot; i & Quot; < - plot (). Luego quiero agregar eso a un vector para tener una serie de gráficos que luego puedo usar en una etapa posterior cuando quiero hacer un pdf. O tal vez hay otra forma de almacenar esto.

Estoy familiarizado con la función pegar () pero no he descubierto cómo definir un objeto usándolo.

¿Fue útil?

Solución

Si quiere un " vector " de objetos de trama, la forma más fácil es probablemente almacenarlos en un list Use paste() para crear un nombre para su diagrama y luego agréguelo a la lista:

# 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()

}

Si no deseaba almacenar las parcelas en una lista y literalmente quería crear un nuevo objeto que tuviera el nombre contenido en pltName, entonces podría usar assign():

# 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 )

Otros consejos

Eche un vistazo a los paquetes lattice o ggplot2, las funciones de trazado en estos paquetes crean objetos que pueden asignarse a variables y pueden imprimirse o trazarse en una etapa posterior.

Por ejemplo con <=>:

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

O agregue los objetos a una lista:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top