Hi Alex,

What is happening is that the ´dist´function calculates a distance matrix,
and returns an object of the ´dist´ class.

> temp <- rbind (c(10,1),c(99,98))
> x=dist(temp)
> x
         1
2 131.6435
> class(x)
[1] "dist"

You can see a description of the ´dist´class at the end of the function´s
help file.  Do this:
>?dist

So when you do dist(temp) you do not just get a number.  You get an object
that has the distance between the points, plus additional information (i.e.
the method used to calculate the distance, if the matrix contains only the
lower triangle or also the upper triangle and the diagonal, etc.).  If you
do sqrt() or 1/ over this object it is still of the ´dist´ class:

> x=dist(temp)
> x=sqrt(x)
> class(x)
[1] "dist"
> x=1/x
> class(x)
[1] "dist"

Notice that you still the right answer (0.08715662).  For some reason R
prints the attributes of the object when you do the inverse but not when you
do the square root (I´m curious about why...If anyone has an answer please
pitch in).

If you only want to get a number, do this:
> x=as.numeric(dist(temp))
> class(x)
[1] "numeric"
> 1/sqrt(as.numeric(dist(temp)))
[1] 0.08715662

All the best,

Julián

Julian Mariano Burgos
Hafrannsóknastofnunin/Marine Research Institute
Skúlagata 4, 121 Reykjavík, Iceland
Sími/Telephone : +354-5752037
Bréfsími/Telefax:  +354-5752001
Netfang/Email: jul...@hafro.is, jmbur...@uw.edu


On Thu, Sep 16, 2010 at 10:02 AM, Alaios <ala...@yahoo.com> wrote:

> Hello I have some strange output from R and I try to understand how R
> works.
>
> Could you please help me with that?
>
> temp <- rbind (c(10,1),c(99,98))
> > temp
>     [,1] [,2]
> [1,]   10    1
> [2,]   99   98
>
>
> > dist(temp)
>         1
> 2   131.6435
>
>
> > sqrt(dist(temp))
>         1
> 2   11.47360
>
> so far so good.
>
> until the nex line: when I try to do what i did before but adding the
> 1/(what I
> did before). I was expecting a number as a result of the division but
> unfortunately I took the following:
>
>  1/sqrt(dist(temp))
> [1] 0.08715662
> attr(,"Size")
> [1] 2
> attr(,"Diag")
> [1] FALSE
> attr(,"Upper")
> [1] FALSE
> attr(,"method")
> [1] "euclidean"
> attr(,"call")
> dist(x = temp)
> attr(,"class")
> [1] "dist"
>
>
> Could you please help me understand what is this about?
>
> I would like to thank you in advance for your help
> Best REgards
> Alex
>
>
>
>
>        [[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.
>



--

        [[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