What you need is chapter 9 in
http://cran.r-project.org/doc/manuals/R-intro.pdf . And you could also use
chapter 2, especially 2.2.

> specdist <-matrix(NA,nrow=40,ncol=20)
>
> for (j in 1:40){
>  for(i in 1:20){
>
specdist[j,i]<-sqrt((pnr[i,1]-mvp[i,1])^2+(pnr[i,2]-mvp[i,2])^2)+....+(pnr[i,14]-mvp[i,14])^2))
> }
> }
> but it only repeats from 1:40 and does not step from 41 to 80; from 81 to
40 etc. certainly there is a "if" "else" "next" "step??" or "while"
> missing, but I never implemented one of those. :(

It does exactly what you've told it to do. And if(you really insist on using
loops) it would be easy to add another loop that would go from 0 to 40 to 80
etc:
for(another.unnecessary.loop in seq(0,800,40){ # and now add that one to i
for pnr

And things like dist() might make calculating distance matrices /see:
help(dist) / a bit easier. As you see from documentation, it calculates
distances between rows of a matrix; so you can first rbind your 2 matrices,
then use dist, and then extract the part you want. Or at least you might
want to consider making your calculations simpler by using vectors in a
decent way:

sqrt(sum((pnr[i,]-mvp[i,])^2 ))   # instead of adding them one by one

good luck,
Kenn

On Wed, Jul 30, 2008 at 10:49 AM, Jens Oldeland <[EMAIL PROTECTED]> wrote:

> Dear all,
>
> I have a problem with constructing a nested loop.
>
> I have two matrices:
>
> pnr:
> 800 rows 14 columns
>
> where rows are 40x20 meaning that 40 rows belong to one of twenty objects
> in the matrix pnr
>
> mvp:
> 20 rows and 14 columns
>
> I want to:
> calculate a distance value with the first 40 rows of pnr but 20times with
> the 1st row of mvp
>
> then the next 40 rows of pnr and 20times with the second row of mvp and so
> on. in total 20 times.
>
> i tried with:
>
>
> > dim(p)
> [1] 800  14
> > dim(mvp)
> [1] 20 14
>
> specdist <-matrix(NA,nrow=40,ncol=20)
>
> for (j in 1:40){
>  for(i in 1:20){
>
> specdist[j,i]<-sqrt((pnr[i,1]-mvp[i,1])^2+(pnr[i,2]-mvp[i,2])^2)+....+(pnr[i,14]-mvp[i,14])^2))
> }
> }
>
> but it only repeats from 1:40 and does not step from 41 to 80; from 81 to
> 40 etc. certainly there is a "if" "else" "next" "step??" or "while" missing,
> but I never implemented one of those. :(
>
> I would be very grateful for any help!
> thank you
>
> Jens
>
> ______________________________________________
> 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.
>

        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to