[R] Matrix manipulation in for loop

2011-05-16 Thread clips10
Hi all,

I have a problem with getting my code to do what I want!

This is the code I have:

create.means.one.size-function(nsample,var,nboot){
mat.x-matrix(0,nrow=nboot,ncol=nsample)

for(i in 1:nboot){
mat.x[i,]-sample(var,nsample,replace=T)
}
mean.mat-rep(0,nboot)

for(i in 1:nboot){
mean.mat[i]-mean(mat.x[i,])
}

sd.mean-sd(mean.mat)
return(mean.mat)
}

where nsample here is a scalar.
Then this is where I have the problem

create.all.means-function(nsample,var,nboot){

MEANS-matrix(0,nrow=nboot,ncol=length(nsample))
for(j in nsample){
MEANS[,]-create.means.one.size(j,var,nboot)
}
return(A=list(MEANS=MEANS,nsample=nsample,std.dev=sd(MEANS)))
}

here nsample is a vector of the different sample sizes I want. This function
should first create an empty matrix MEANS then it loops through the possible
values of nsample each time it calls create means.one.size() and puts the
output into the appropriate column of means.

this function outputs the matrix MEANS and the vector nsample  - both as
part of a list

However, the vector nsample could be c(1,3,5) but I want the outputs to go
into columns 1, 2 and 3 rather than 1,3,5 (which I'm not even sure would
work anyway!) Any help would be great!

If I leave the code as it is and use the vector 

data-c(1,2,3) 

Then 

create.all.means(c(1,2),data,5)

gives

$MEANS
 [,1] [,2]
[1,]  2.5  2.5
[2,]  1.0  1.0
[3,]  2.0  2.0
[4,]  2.0  2.0
[5,]  2.0  2.0

$nsample
[1] 1 2

$std.dev1] 0.5477226 0.5477226[

which obviously isn't correct :(



--
View this message in context: 
http://r.789695.n4.nabble.com/Matrix-manipulation-in-for-loop-tp3525849p3525849.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Matrix manipulation in for loop

2011-05-16 Thread jm_jem
hello
I think if you try this:

for(j in  1: length(nsample)){
MEANS[,]-create.means.one.size(j,var,nboot)
} 


it will work

--
View this message in context: 
http://r.789695.n4.nabble.com/Matrix-manipulation-in-for-loop-tp3525849p3525888.html
Sent from the R help mailing list archive at Nabble.com.

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.