Thanks, Gabor & Thomas.

Apologies, but I used an example that obfuscated the question that I wanted to ask. 

I really wanted to know how to have extra arguments in functions that would allow, per the example code, for something like a counter to be incremented. 
Thomas's suggestion of using mapply (reproduced below with corrections) is probably closest.

Jack.

PS Here's the corrected code:

    d<- data.frame(read.table(textConnection("
         Y     X     D 
                85    30     0
                95    40     1
                90    40     1
                75    20     0
           100    60     1
                90    40     0
                90    50     0
                90    30     1
               100    60     1
                85    30     1"
    ), header=TRUE))
    windows(); plot(Y ~ X, d, type="n") 
    colors<- c("blue","green")
    junk<- mapply( 
        function(z,color) with(z, lines(X, predict(lm(Y~X)), col=color)),
        with(d, split(d,D)), 
        color=colors
    )




Thomas Lumley <tlumley@u.washington.edu> wrote:
You can't get lapply to increment i, but you can use mapply and write your 
function with two arguments.

mapply( function(z,colour) with(z, lines(X, predict(lm(Y~X), col=colour)),
         with(d, split(d,D)),
         colors)



  -thomas


Gabor Grothendieck <ggrothendieck@gmail.com> wrote: Try this:

plot(Y ~ X, d, type = "n")
f <- function(i) abline(lm(Y ~ X, d, subset = D == i), col = colors[i+1])
junk <- lapply(unique(d$D), f)




On 3/13/06, John McHenry  wrote:
>    Hi All,
>
>    I'm looking for some hints on idiomatic R usage using 'lapply' or similar.
>    What follows is a simple example from which to generalize my question...
>
>    # Suppose, in this simple example, I want to plot a number of different lines in different colors;
>    # I define the colors I wish to use and I plot them in a loop:
>    d<- data.frame(read.table(textConnection("
>         Y     X     D
>                85    30     0
>                95    40     1
>                90    40     1
>                75    20     0
>           100    60     1
>                90    40     0
>                90    50     0
>                90    30     1
>               100    60     1
>                85    30     1"
>    ), header=TRUE))
>    # graph the relation of Y to X when
>    #     i)  D==0
>    #     ii) D==1
>    with( d, plot(X, Y, type="n") )
>    component<- with( d, split(d, D) )
>    colors<- c("blue", "green")
>    for (i in 1:length(component))
>        with( component[[i]], lines(X, predict(lm(Y ~ X)), col=colors[i]) )
>
>    #
>    # ... seems easy enough
>    #
>    # [Q.]: How to do the same as the above but using 'lapply'?
>    # ... i.e. something along the lines of:
>    with( d, plot(X, Y, type="n") )
>    colors<- c("blue", "green")
>    # how do I get lapply to increment i?
>    lapply( with(d, split(d, D)), function(z) with(z, lines(X, predict(lm(Y ~ X)), col=colors[i])) )
>
> Thanks,
>
> Jack.
>
>
>
> ---------------------------------
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>


		
---------------------------------

	[[alternative HTML version deleted]]


