Вы должны передать квалифицированное имя функции в @>
и помнить, что нет макроса @groupby
(это функция), например:
julia> using DataFrames, DataFramesMeta, RDatasets
julia> iris = dataset("datasets", "iris");
julia> a = @linq iris |>
groupby(:Species) |>
transform(mean_sepal_length = mean(:SepalLength));
julia> using Lazy
WARNING: using Lazy.groupby in module Main conflicts with an existing identifier.
julia> b = @> begin
iris
DataFrames.groupby(:Species)
@transform(mean_sepal_length = mean(:SepalLength))
end;
julia> a == b
true
На самом деле единственная проблема, с которой вы столкнулись бы, это когдавы хотите использовать @linq
, так как он не будет принимать квалифицированные имена:
julia> a = @linq iris |>
DataFrames.groupby(:Species) |>
transform(mean_sepal_length = mean(:SepalLength))
ERROR: MethodError: Cannot `convert` an object of type Expr to an object of type DataFramesMeta.SymbolParameter
This may have arisen from a call to the constructor DataFramesMeta.SymbolParameter(...),
since type constructors fall back to convert methods.
Обходной путь - создать переменную, которая ссылается на метод, который вы хотите:
julia> gb = DataFrames.groupby
groupby (generic function with 4 methods)
julia> a = @linq iris |>
gb(:Species) |>
transform(mean_sepal_length = mean(:SepalLength))
.