Hi, I try to make a vector in a for for loop, but it dont work. Look:> a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a <- i+j; print(a)}}[1] 2 [1] 3 [1] 3 [1] 4 I try to make this a vector, like this: [1] 2 3 3 4> a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[j] <- i+j}}; print(a)[1] 3 4> a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[i] <- i+j}}; print(a)[1] 3 4 In this way the vector have only the two last loop. I try another way but it dont work. How make a correct index for this loop inside loop? Thanks Ronaldo -- As coisas por aqui n?o andam, arrastam-se lentamente em dire??o a lugar nenhum. Eu hoje acordei assim, otimista... -- | // | \\ [*****************************][*******************] || ( ? ? ) [Ronaldo Reis J?nior ][PentiumIII-600 ] | V [UFV/DBA-Entomologia ][HD: 30 + 10 Gb ] || / \ [36571-000 Vi?osa - MG ][RAM: 128 Mb ] | /(.''`.)\ [Fone: 31-3899-2532 ][Video: SiS620-8Mb ] ||/(: :' :)\ [chrysopa at insecta.ufv.br ][Modem: Pctel-onboar] |/ (`. `'` ) \[ICQ#: 5692561 ][Kernel: 2.4.18 ] || ( `- ) [*****************************][*******************] ||| _/ \_Powered by GNU/Debian W/Sarge D+ || Lxuser#: 205366
"Ronaldo Reis Jr." <chrysopa at insecta.ufv.br> writes:> Hi, > > I try to make a vector in a for for loop, but it dont work. > > Look: > > > a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a <- i+j; print(a)}} > [1] 2 > [1] 3 > [1] 3 > [1] 4 > > I try to make this a vector, like this: > [1] 2 3 3 4 > > > a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[j] <- i+j}}; print(a) > [1] 3 4 > > a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[i] <- i+j}}; print(a) > [1] 3 4 > > In this way the vector have only the two last loop. > > I try another way but it dont work. > > How make a correct index for this loop inside loop?Use a 3rd index: k <- 0 a <- numeric(4) for(i in 1:2) for(j in 1:2){ k <- k + 1 a[k] <- i+j } a or simply as.vector(outer(1:2,1:2,"+")) -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
Printing some intermediate expressions can make it clearer what R is trying
to do:
> a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { e<-substitute(a[j]
<-
i+j,list(i=i,j=j)); cat("executing:", deparse(e),"\n");
eval(e)}}; print(a)
executing: a[1] <- 1 + 1
executing: a[2] <- 1 + 2
executing: a[1] <- 2 + 1
executing: a[2] <- 2 + 2
[1] 3 4
>
Perhaps this is what you want: (?)
> a <- numeric(0);for(i in c(1:2)) { for(j in c(1:2)) { a <- c(a,i+j);
print(a)}}
[1] 2
[1] 2 3
[1] 2 3 3
[1] 2 3 3 4
> a
[1] 2 3 3 4
>
(This is not the most efficient way to construct a vector in a loop, but it
works and the code captures the spirit of what I'm guessing you were trying
to do.)
hope this helps,
-- Tony Plate
At Monday 07:22 PM 5/5/2003 -0300, Ronaldo Reis Jr.
wrote:>Hi,
>
>I try to make a vector in a for for loop, but it dont work.
>
>Look:
>
> > a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a <- i+j;
print(a)}}
>[1] 2
>[1] 3
>[1] 3
>[1] 4
>
>I try to make this a vector, like this:
>[1] 2 3 3 4
>
> > a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[j] <- i+j}};
print(a)
>[1] 3 4
> > a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[i] <- i+j}};
print(a)
>[1] 3 4
>
>In this way the vector have only the two last loop.
>
>I try another way but it dont work.
>
>How make a correct index for this loop inside loop?
>
>Thanks
>Ronaldo
>--
>As coisas por aqui n?o andam, arrastam-se lentamente em dire??o
>a lugar nenhum.
>
>Eu hoje acordei assim, otimista...
>--
>| // | \\ [*****************************][*******************]
>|| ( ? ? ) [Ronaldo Reis J?nior ][PentiumIII-600 ]
>| V [UFV/DBA-Entomologia ][HD: 30 + 10 Gb ]
>|| / \ [36571-000 Vi?osa - MG ][RAM: 128 Mb ]
>| /(.''`.)\ [Fone: 31-3899-2532 ][Video: SiS620-8Mb ]
>||/(: :' :)\ [chrysopa at insecta.ufv.br ][Modem: Pctel-onboar]
>|/ (`. `'` ) \[ICQ#: 5692561 ][Kernel: 2.4.18 ]
>|| ( `- ) [*****************************][*******************]
>||| _/ \_Powered by GNU/Debian W/Sarge D+ || Lxuser#: 205366
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
Two alternative solutions:
as.vector(outer(1:2, 1:2, "+"))
a <- rep(NA, 4)
i1 <- 0
for(i in 1:2)for(j in 1:2){
i1 <- i1+1
a[i1] <- i+j
}
a
hth. spencer graves
Ronaldo Reis Jr. wrote:> Hi,
>
> I try to make a vector in a for for loop, but it dont work.
>
> Look:
>
>
>>a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a <- i+j; print(a)}}
>
> [1] 2
> [1] 3
> [1] 3
> [1] 4
>
> I try to make this a vector, like this:
> [1] 2 3 3 4
>
>
>>a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[j] <- i+j}};
print(a)
>
> [1] 3 4
>
>>a <- 0;for(i in c(1:2)) { for(j in c(1:2)) { a[i] <- i+j}};
print(a)
>
> [1] 3 4
>
> In this way the vector have only the two last loop.
>
> I try another way but it dont work.
>
> How make a correct index for this loop inside loop?
>
> Thanks
> Ronaldo