[R] [FORGED] Re: Generate list if sequence form two vector element

Keith Jewell Keith.Jewell at campdenbri.co.uk
Wed Jun 22 11:54:34 CEST 2016


or as a one-liner
mapply(pmin(a, b), pmax(a,b), FUN=seq, SIMPLIFY=FALSE)

On 22/06/2016 10:23, peter dalgaard wrote:
> There's also
>
> mapply(a, b, FUN=seq, SIMPLIFY=FALSE)
>
> (turn off simplication so that you don't unexpectedly get a matrix whenever all elements of results have same length. This also affects apply()-based solutions.)
>
> ...except that according to original spec, one should ensure a < b. So
>
> myseq <- function(a,b) if(a<b) a:b else b:a
> mapply(a, b, FUN=myseq, SIMPLIFY=FALSE)
>
> -pd
>
>> On 22 Jun 2016, at 10:42 , Jim Lemon <drjimlemon at gmail.com> wrote:
>>
>> Now why didn't I think of that?
>>
>> apply(matrix(c(a,b),ncol=2),1,function(x)x[1]:x[2])
>>
>> Jim
>>
>> On Wed, Jun 22, 2016 at 6:14 PM, Rolf Turner <r.turner at auckland.ac.nz> wrote:
>>> On 22/06/16 20:00, Jim Lemon wrote:
>>>>
>>>> Hi Tanvir,
>>>> Not at all elegant, but:
>>>>
>>>> make.seq<-function(x) return(seq(x[1],x[2]))
>>>> apply(matrix(c(a,b),ncol=2),1,make.seq)
>>>
>>>
>>> Not sure that this is more "elegant" but it's a one-liner:
>>>
>>> lapply(1:length(a),function(i,a,b){a[i]:b[i]},a=a,b=b)
>>>
>>> cheers,
>>>
>>> Rolf
>>>
>>>
>>>> On Wed, Jun 22, 2016 at 5:32 PM, Mohammad Tanvir Ahamed via R-help
>>>> <r-help at r-project.org> wrote:
>>>>>
>>>>> Hi,
>>>>> I want to do the follow thing
>>>>>
>>>>> Input :
>>>>> a <- c(1,3,6,9)
>>>>>
>>>>>
>>>>> b<-c(10,7,20,2)
>>>>>
>>>>>
>>>>> Expected outcome :
>>>>>
>>>>> d<-list(1:10,3:7,6:20,2:9)



More information about the R-help mailing list