Question

J'utilise R pour parcourir une trame de données, effectuer un calcul et créer un tracé.

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

# do analysis

# make plot
a <- plot()
}

Existe-t-il un moyen de rendre le nom d'objet de tracé "a" en utilisant la valeur de "i"? Par exemple, un + & Quot; i & Quot; < - plot (). Ensuite, je souhaite ajouter cela à un vecteur afin de disposer d’une série de tracés que je pourrai utiliser ultérieurement, lorsque je souhaite créer un fichier PDF. Ou peut-être y a-t-il un autre moyen de stocker cela.

Je connais bien la fonction paste () mais je n'ai pas compris comment définir un objet à l'aide de celle-ci.

Était-ce utile?

La solution

Si vous voulez un " vecteur " des objets de tracé, le moyen le plus simple est probablement de les stocker dans un list. Utilisez paste() pour créer un nom pour votre tracé, puis ajoutez-le à la 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()

}

Si vous ne souhaitez pas stocker les parcelles dans une liste et que vous souhaitez créer un nouvel objet dont le nom est contenu dans pltName, vous pouvez utiliser 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 )

Autres conseils

Examinez les packages lattice ou ggplot2, les fonctions de tracé de ces packages créent des objets pouvant être affectés à des variables et imprimés ou représentés ultérieurement.

Par exemple avec <=>:

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

Ou ajoutez les objets à une liste:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top