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,它可以让你做 dplyr
和 LINQ
之类的事情,例如(取自他们的自述文件):
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
在 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,它可以让你做 dplyr
和 LINQ
之类的事情,例如(取自他们的自述文件):
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