# [R] Newbie: Simple loops: complex troubles

Petr Klasterecky klaster at karlin.mff.cuni.cz
Wed Apr 4 07:53:25 CEST 2007

```Not sure whether this is exactly and everything you want, but at least
it may give you some ideas how to proceed. You do not need loops at all:

Let's try a simplified example with 3 samples, each of length 10 (just
for printing purposes):

m <- c(1,2,3)
v <- c(1,4,9)
n <- 10
means <- rep(m,each=n)
vars <- rep(v,each=n)
means
 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
vars
 1 1 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 9 9 9 9 9 9 9 9 9 9

numbers <- matrix(rnorm(length(means), mean=means, sd=sqrt(vars)),
nrow=n, byrow=F)
numbers
[,1]       [,2]      [,3]
[1,]  0.9721407  0.4510903 -2.880967
[2,] -0.4834124 -2.7958993 -1.368037
[3,]  1.6871736 -0.6717009 -3.268698
[4,]  0.9738312  3.1919293  3.982135
[5,]  0.8032162  1.0397078  7.227974
[6,] -0.1606657  2.6339503  5.873210
[7,]  0.5786295 -0.3589869  4.194425
[8,]  0.9909184  2.0622899  6.432129
[9,]  3.1687842  1.9765014  3.788201
[10,]  1.4814704  3.3024049  4.194628

colnames(numbers) <- paste('Ux',1:length(m),sep='')
numbers
Ux1        Ux2       Ux3
[1,]  0.9721407  0.4510903 -2.880967
[2,] -0.4834124 -2.7958993 -1.368037
[3,]  1.6871736 -0.6717009 -3.268698
[4,]  0.9738312  3.1919293  3.982135
[5,]  0.8032162  1.0397078  7.227974
[6,] -0.1606657  2.6339503  5.873210
[7,]  0.5786295 -0.3589869  4.194425
[8,]  0.9909184  2.0622899  6.432129
[9,]  3.1687842  1.9765014  3.788201
[10,]  1.4814704  3.3024049  4.194628

Now your random vectors are in columns of 'numbers' and you can work
with them using indexing.

Petr

projection83 napsal(a):
> I am used to java (well, i dont remember it really well, but anyway)
>
> I have having a really difficult time making simple loops to work. I got the
> following to work:
>
>          ##
> 	##Creates objects Ux1, Ux2, Ux2 etc. that  all contain n numbers in a
> random distribution
> 	##
>  	m<-c(m1,m2,m3,m4,m5,m6,m7,m8,m9,m10)#these are defined as numbers (means)
> 	v<-c(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)#these are defined as numbers
> (variances)
>         n<-50
> 	for(k in 1:g)
> 	{
> 		assign( paste("Ux", k, sep=""), rnorm( n  ,
> assign(paste("m",1,sep=""),m[k])   ,   assign(paste("m",1,sep=""),v[k])  )
> )
> 	}
>
>
> The above seems like a lot of work for such a simple feat, no?
>
> Also, I CANNot get the following to work in a loop manor:
>
>         Ux1i<-as.integer(Ux1)
> 	Ux2i<-as.integer(Ux2)
> 	Ux3i<-as.integer(Ux3)
>
> or
>
> 	Sx1<-sort(Ux1i)
> 	Sx2<-sort(Ux2i)
> 	Sx3<-sort(Ux3i)
>
> Maybe I am just not using matrixes enough? but even that seems quite a lot
> more complex than calling x<-matrix() then grabbing values by
> x[j][k]...(java style if i remember correctly). the matrix help in R dosnt
> make much sense to me. And also i am not sure why numeric() dosnt make you
> define length before you use it, yet matrix() does.  Is there some other
> funciton that i should be using to make length not an issue?
>
>
> All in all, I dont know if i am going about this loop stuff a reaaaaly round
> about way - Any help would make me much less loopy:Pthanks
>
>
>

--
Petr Klasterecky
Dept. of Probability and Statistics
Charles University in Prague
Czech Republic

```