# [R] Compressing code help in a loop

Francesca francesca.pancotto at gmail.com
Mon Nov 10 13:14:28 CET 2014

```Dear Contributors

I have a problem with a loop.

I needed to create a variable that takes values 1,2.. to 19 corresponding
to the value of a variable in a data.frame whose name is p_int\$p_made and

which takes values from 406  to 211.

The problem is that this values come ordered in the wrong way when I try to
compress the loop as the system reads

107,111,207,211,311,406,407,408,409,410,411,

while they correspond to quarters-years so they should be ordered as

406-107-207-307-407…

the only solution I found was really silly. It is the following.

p_m<-matrix(0,dim(p_int)[1],1)

for (i in 1:length(p_int\$p_made)){

if (p_int\$p_made[i]==406) p_m[i]<-1 else

if (p_int\$p_made[i]==107) p_m[i]<-2 else

if (p_int\$p_made[i]==207) p_m[i]<-3 else

if (p_int\$p_made[i]==307) p_m[i]<-4 else

if (p_int\$p_made[i]==407) p_m[i]<-5 else

if (p_int\$p_made[i]==108) p_m[i]<-6 else

if (p_int\$p_made[i]==208) p_m[i]<-7 else

if (p_int\$p_made[i]==308) p_m[i]<-8 else

if (p_int\$p_made[i]==408) p_m[i]<-9 else

if (p_int\$p_made[i]==109) p_m[i]<-10 else

if (p_int\$p_made[i]==209) p_m[i]<-11 else

if (p_int\$p_made[i]==309) p_m[i]<-12 else

if (p_int\$p_made[i]==409) p_m[i]<-13 else

if (p_int\$p_made[i]==110) p_m[i]<-14 else

if (p_int\$p_made[i]==210) p_m[i]<-15 else

if (p_int\$p_made[i]==310) p_m[i]<-16 else

if (p_int\$p_made[i]==410) p_m[i]<-17 else

else

}

Can anyone help to find something more efficient?

Francesca

--

Francesca

----------------------------------
Francesca Pancotto
Associate Professor
University of Modena and Reggio Emilia
Viale A. Allegri, 9
40121 Reggio Emilia
Office: +39 0522 523264