# [R] OK, next Q - a sort of factorial on a vector

Philip Rhoades ph|| @end|ng |rom pr|com@com@@u
Tue Jun 20 20:52:23 CEST 2023

```Eric,

On 2023-06-21 04:02, Eric Berger wrote:
> Hi Philip,
> In the decades since you learned R there have been some additions to
> the language.
> In particular, R now supports lambda functions.
> Applying this feature to Ivan's beautiful solution cuts down 7
> characters (continuing his golfing analogy)
>
> unlist(lapply(seq_along(x), \(i) x[i] * x[-(1:i)]))

Amazing! - it reminds me of the old days when there were competitions to
write the smallest C programs . .

Thanks! I think I was right to look at R first - it is exactly what I
need I think - and the model I am thinking of shouldn't need any grunt
that would require rewriting any functions in C or Rust or something . .

P.

> On Tue, Jun 20, 2023 at 8:46 PM Philip Rhoades via R-help
> <r-help using r-project.org> wrote:
>
>> Ivan,
>>
>> On 2023-06-21 03:32, Ivan Krylov wrote:
>>> В Wed, 21 Jun 2023 03:13:52 +1000
>>> Philip Rhoades via R-help <r-help using r-project.org> пишет:
>>>
>>>> This:
>>>>
>>>> !(1,2,3,4,5)
>>>>
>>>> would give this:
>>>>
>>>> (2,3,4,5, 6,8,10, 12,15, 20)
>>>
>>> Do you mean taking a product of every element of the vector with
>> all
>>> following vector elements? A relatively straightforward way would
>> be
>>> (given your vector stored in `x`):
>>>
>>> unlist(lapply(seq_along(x), function(i) x[i] * x[-(1:i)]))
>>
>> Perfect!
>>
>>> (I'm sure it could be golfed further.)
>>
>> I will look at Sarah's suggestion too.
>>
>>>> and this:
>>>>
>>>> !(1,2,NA,4,5)
>>>>
>>>> would give this:
>>>>
>>>> (2,4,5, 8,10, 20)
>>>
>>> The previous solution seems to give your vector interspersed a
>> bunch of
>>> NAs, so one way to continue would be to filter it using v[!is.na
>> [1](v)].
>>
>> Exactly!
>>
>> Thanks people - it would have taken forever to work that out myself
>> (it
>> has been decades since I looked at R).
>>
>> Phil.
>> --
>>
>> PO Box 896
>> Cowra  NSW  2794
>> Australia
>> E-mail:  phil using pricom.com.au
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
>
> ------
> [1] http://is.na

--