dplyr 像朱莉娅中的 %>% 语法

dplyr like %>% syntax in julia

在 R 中(感谢 magrittr/dplyr)您现在可以调用不带括号的函数,但您可以通过管道传递它们。

这意味着不用编码:

> as.character((sqrt(12)^2)
> as.Date("2014-01-01")

你也可以这样做:

> 12 %>% sqrt %>% .^2 %>% as.character
> "2014-01-01" %>% as.Date 

R 广泛使用它来编辑数据帧。除了数据帧之外,我觉得这种语法对于创建函数式脚本来说非常可读且强大。

julia 语言是否支持类似的东西?

是的,有两种意义。

所以首先有|>,例如

12 |> sqrt |> x->x^2 |> string  # 11.999999999999998
using Dates  # needed in 0.3, baked in to 0.4
"2014-01-1" |> d->Date(d,"yyyy-mm-dd") |> year |> iseven  # true

虽然我不会说它非常地道的 Julia(或 R,但在使用 dplyr 对数据帧进行操作时除外)。 There is a discussion about enhancing this type of thing and making the syntax better. You can do a lot of neat things with Lazy.jl 不过现在!

特别是对于 DataFrames,它是一个 WIP,但是有 DataFramesMeta.jl combined with Lazy.jl,它可以让你做 dplyrLINQ 之类的事情,例如(取自他们的自述文件):

x_thread = @> begin
    df
    @transform(y = 10 * :x)
    @where(:a .> 2)
    @by(:b, meanX = mean(:x), meanY = mean(:y))
    @orderby(:meanX)
    @select(:meanX, :meanY, var = :b)
end