Domanda

Sto usando R per scorrere un frame di dati, eseguire un calcolo e creare un grafico.

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

# do analysis

# make plot
a <- plot()
}

Esiste un modo in cui posso rendere il nome dell'oggetto della trama 'a', usando il valore di 'i'? Ad esempio, un + & Quot; i & Quot; < - plot (). Quindi voglio aggiungerlo a un vettore, quindi ho una serie di grafici che posso quindi utilizzare in un secondo momento quando voglio creare un pdf. O forse c'è un altro modo di archiviarlo.

Conosco la funzione paste () ma non ho capito come definire un oggetto utilizzandolo.

È stato utile?

Soluzione

Se vuoi un " vector " degli oggetti della trama, il modo più semplice è probabilmente di memorizzarli in list. Usa paste() per creare un nome per la trama e quindi aggiungilo all'elenco:

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

}

Se non volevi salvare i grafici in un elenco e volevi letteralmente creare un nuovo oggetto con il nome contenuto in pltName, allora puoi usare 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 )

Altri suggerimenti

Dai un'occhiata ai pacchetti lattice o ggplot2, le funzioni di stampa in questi pacchetti creano oggetti che possono essere assegnati a variabili e che possono essere stampati o stampati in una fase successiva.

Ad esempio 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

Oppure aggiungi gli oggetti a un elenco:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top