[R] Plotting multiple ablines

Rolf Turner r.turner at auckland.ac.nz
Wed Apr 1 22:04:23 CEST 2009


On 2/04/2009, at 7:04 AM, Thomas Levine wrote:

> I really want to do this:
>
> abline(
> a=tan(-kT*pi/180),
> b=kY-tan(-kT*pi/180)*kX
> )
>
> where kX,kY and kT are vectors of equal length. But I can't do that
> with abline unless I use a loop, and I haven't figured out the least
> unelegant way of writing the loop yet. So is there a way to do this
> without a loop?
>
> Or if I am to resort to the loop, what's the best way of doing it
> considering that I have some missing data? Here's the mess that I
> wrote.
>
> converge <- na.omit(data.frame(kX,kY,kT))
> for (z in (length(converge$kT)))
> {abline(
> a=tan(converge$kT[z]*pi/180),
> b=converge$kY[z]-tan(-converge$kT[z]*converge$kX[z]*pi/180)
> )}
>
> I think the missing data are causing the problem; this happens when  
> I run:
>
> Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) :
>   'a' and 'b' must be finite

The help for abline explicitly states that a and b must be ``single  
values'';
so no vectorization appears to be possible, as abline is currently  
written.
Hence you are stuck with a for-loop.

There appears to be nothing wrong with the for-loop that you've written,
at first blush at least.

There won't be NAs in ``converge'' since you've very cleverly used  
na.omit.
So ``missing data'' are NOT the problem.

The problem is then (probably) that some of your data are yielding  
infinite
values of tan().

***Look*** at the values in converge.  ***Look*** at the values of a  
and b
produced in your loop and see where you're getting infinite values.

	cheers,

		Rolf Turner

######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}




More information about the R-help mailing list