JuliaArrays / ShiftedArrays.jl

Lazy shifted arrays for data analysis in Julia
Other
50 stars 10 forks source link

add fixing of the array argument for lead and lag #61

Open bkamins opened 1 year ago

bkamins commented 1 year ago

I propose that lag(2) could be a shorthand of x -> lag(x, 2), using Base.Fix2. This definition should not introduce any ambiguities and would provide a convenient way for defining a function with lag different than 1.

The same for lead.

piever commented 1 year ago

I see how this would be useful (esp. for the high-level data manipulation syntax of DataFrames & co.). One issue is that for the shifts argument ShiftedArrays accepts also Tuples (actually arbitrary iterables, but that might be disallowed).

Would it be worrying that lag([1, 2]) means "shift [1, 2] by 1, whereas lag((1, 2)) is an anonymous function to shift matrices?

bkamins commented 1 year ago

ShiftedArrays.lag((1,2)) currently errors, so I understand you are worried that people would mix-up vectors and tuples. Indeed it might happen, but at least on my side I try to work hard to explain people that these types are not interchangeable in general and have different usages.