[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