Pergunta

Eu estou usando R percorrer um quadro de dados, executar um cálculo e para fazer um enredo.

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

# do analysis

# make plot
a <- plot()
}

Existe uma maneira que eu posso fazer o nome do objeto enredo 'a', usando o valor do 'i'? Por exemplo, a + "i" <- plot (). Então eu quero acrescentar que para um vetor, por isso tenho uma série de parcelas que eu possa, em seguida, usar numa fase posterior, quando eu quiser fazer um pdf. Ou talvez não há outra maneira de armazenar isso.

Eu estou familiarizado com a função colar (), mas eu ainda não descobri como definir um objeto de usá-lo.

Foi útil?

Solução

Se você quer um "vector" de objetos de enredo, a maneira mais fácil é provavelmente para armazená-los em um list. Use paste() para criar um nome para o enredo e, em seguida, adicioná-lo à 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()

}

Se você não deseja armazenar as parcelas em uma lista e, literalmente, queria criar um novo objeto que tinha o nome contido no pltName, então você poderia 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 )

Outras dicas

Tenha um olhar para o lattice pacotes ou ggplot2, as funções de enredo nesses pacotes criar objetos que podem ser atribuídos a variáveis ??e podem ser impressos ou plotados em um estágio posterior.

Por exemplo, com 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

ou anexar os objetos para uma lista:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top