Hi,

Perhaps you can try this,


seq.weave <- function(froms, by, length,  ... ){
        c(
                matrix(c(sapply(froms, seq, by=by, length = length/2,  ...)),
                nrow=length(froms), byrow=T)
                )
}

seq.weave(c(2, 3), by=3, length=8)
seq.weave(c(2, 3, 4), by=2, length=8)


HTH,

baptiste

On 21 May 2009, at 21:08, Rowe, Brian Lee Yung (Portfolio Analytics) wrote:

Hello,

I want to use seq with multiple from values and am getting unexpected
(to me) behavior. I'm wondering if this behavior is intentional or not.

seq(2, by=3, length.out=4)
[1]  2  5  8 11

seq(3, by=3, length.out=4)
[1]  3  6  9 12

Now if I want the combined sequence, I thought I could pass in c(2,3),
and I get:
seq(c(2,3), by=3, length.out=8)
[1]  2  6  8 12 14 18 20 24

However, the result is not what I expected (i.e. what I wanted):
[1]  2  3  5  6  8  9 11 12

It seems that this is a consequence of vector recycling during the
summation in seq.default:
 if (missing(to)) from + (0L:(length.out - 1L)) * by

To get the value I want, I am using the following code:
sort(as.vector(apply(array(c(2,3)), 1, seq, by=3,length.out=4)))
[1]  2  3  5  6  8  9 11 12

So two questions:
1. Is seq designed/intended to be used with a vector from argument, and
is this the desired behavior?
2. If so, is there a cleaner way of implementing what I want?

Thanks,
Brian




--------------------------------------------------------------------------
This message w/attachments (message) may be privileged...{{dropped:26}}

______________________________________________
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