[R-es] usar un for para cambiar indice

Luisfo luisfo89 en yahoo.es
Mie Sep 7 16:27:23 CEST 2016


Estimado Sebatian,

Si quieres tener todos los gráficos en un solo plot, me parece mejor 
opción matplot que sugirió Jorge.
Ahora que, viendo que dices tener los datos en una lista (PPcapita es 
una lista) y querer usar un for, te doy la siguiente alterantiva.

Tiempo <- seq(1:100)
plot(Tiempo, PP$"Serie 1", type="l",col="1")
for(i in 2:10){
   #construyes el nombre de la serie ("Serie $i")
   serieName <- paste("Serie", i)
   #pintas la curva
   lines(times,PPcapita[[serieName]], col=i)
}

Espero que te sirva.

Un saludo,

*Luisfo Chiroque*
/PhD Student | PhD Candidate
IMDEA Networks Institute/
http://fourier.networks.imdea.org/people/~luis_nunez/ 
<http://fourier.networks.imdea.org/people/%7Eluis_nunez/>

On 09/06/2016 10:37 PM, Carlos Ortega wrote:
> Hola,
>
> La forma en la que lo has planteado no va a funcionarte porque usas
> *PPcapita$"Serie
> i"* y esto supone una evaluación "en caliente" de un literal. La forma de
> hacerlo con un bucle es referenciar la columna de la serie a
> representar *PPcapita[,
> i]*.
>
> Y por otro lado si quieres todos los gráficos agrupados, has de
> utilizar *par(mfrow
> = c(nrows, ncols)) *antes de pintar nada.
>
> Quedando así:
>
> #--------------
> PPcapita <- as.data.frame(matrix( rnorm(100 * 10), ncol = 10))
>
> Tiempo <- 1:100
> par(mfrow = c(2,5))
> for( i in 1:ncol(PPcapita)) {
>    plot(Tiempo, PPcapita[, i])
> }
> #--------------
>
> Y vectorizado, una forma de hacerlo es esta.
>
> #--------------
> PPcapita <- as.data.frame(matrix( rnorm(100 * 10), ncol = 10))
>
> Tiempo <- 1:100
> par(mfrow = c(2,5))
>
> apply(PPcapita, 2, function(x) {plot(Tiempo, x)})
> #--------------
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 6 de septiembre de 2016, 20:49, Jorge I Velez <jorgeivanvelez en gmail.com>
> escribió:
>
>> Es más fácil si usas matplot.  Mira ?matplot para más información.  Saludos
>> cordiales.   --JIV
>>
>>
>> 2016-09-06 13:48 GMT-05:00 Sebastian Kruk <residuo.solow en gmail.com>:
>>
>>> Estimados usuarios-de-R:
>>>
>>> Tengo un problema.
>>>
>>> Si por ejemplo tengo una lista conformada por la serie historia del PBI
>> de
>>> 10 paìses.
>>>
>>>> Tiempo <- seq(1:100)
>>>> plot(Tiempo, PP$"Serie 1", type="l",col="1")
>>>> lines(Tiempo, PPcapita$"Serie 2")
>>>> lines(Tiempo, PPcapita$"Serie 3")
>>>> lines(Tiempo, PPcapita$"Serie 4")
>>>> lines(Tiempo, PPcapita$"Serie 5")
>>>> lines(Tiempo, PPcapita$"Serie 6")
>>>> lines(Tiempo, PPcapita$"Serie 7")
>>>> lines(Tiempo, PPcapita$"Serie 8")
>>>> lines(Tiempo, PPcapita$"Serie 9")
>>>> lines(Tiempo, PPcapita$"Serie 10")
>>> ¡Y quiero usar un for para lo anterior o vectorizar como lo hago?
>>>
>>> Me da error hacer lo siguiente:
>>>
>>> Tiempo <- seq(1:100)
>>> plot(Tiempo, PP$"Serie 1", type="l",col="red")
>>> for (i in 2:10) {lines(Tiempo, PPcapita$"Serie i",col=i)
>>>
>>> ¿Hay alguna forma de resolverlo?
>>>
>>> Saludos,
>>>
>>> Sebas.
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>
>>          [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>


	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es