On 10/20/2010 12:25 PM, Ben Bolker wrote:
Sadz A<sadz_a1000<at> yahoo.co.uk> writes:
This works fine untill D=0
because then 'sign' does not give 0 a +ve sign it takes it as 0 and multiplies
decimal by 0 to give 0.
example
D<-0
decimal<-D+(M/60)+(S/3600)
decimal.degs<-sign(D)*decimal
decimal.degs
0
decimal.degs<- ifelse(D==0,1,sign(D))*decimal
work?
While Ben gives you what you asked for, I can see a pitfall that what
you asked for is not what you really want. In that notation, there is a
difference between 0 degrees and -0 degrees. However, as numbers, R
would treat them as the same.
> identical(0L,-0L)
[1] TRUE
> identical(0,-0)
[1] TRUE
So that information gets lost. Which really is another way of looking
at the original question: when degrees are 0, the sign indicating
east/west gets lost. The "real" solution involves going back to the
original (string?) form of D, and separating out the sign and the number
as two different pieces of information.
--
Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University
______________________________________________
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.