如何将下述R代码转换为等价的Julia代码?(附报错求助)
正确等价Julia代码及报错解决
报错原因
你的Julia代码出错核心是没搞对DataFrames包的语法逻辑:
- R的dplyr可以直接用列名符号写过滤、计算逻辑,但Julia的DataFrames得用函数式写法或者专用宏
- 管道
|>要求右侧是可执行的函数,你直接写:a >5是个表达式,没法直接用来过滤数据
正确代码
先装依赖包(第一次使用时执行):
using Pkg Pkg.add(["DataFrames", "Chain"]) using DataFrames, Chain
贴近R管道风格的写法
df = DataFrame(a = 1:10, b = 11:20) df_filtered = @chain df begin filter(row -> row.a > 5, _) transform(_, :a => (+, :b) => :c) end println(df_filtered)
分步写法
df = DataFrame(a = 1:10, b = 11:20) # 筛选a大于5的行 df_filtered = filter(row -> row.a > 5, df) # 新增列c,值为a加b transform!(df_filtered, :a => (+, :b) => :c) println(df_filtered)
语法要点
filter(row -> row.a >5, df):用匿名函数定义过滤规则,row指代每一行数据transform/transform!:transform生成新数据框,transform!直接修改原数据;格式是transform(数据框, 原列 => 运算 => 新列名),(+, :b)表示把:a和:b做加法@chain宏:用_代表上一步传过来的对象,和R里%>%用法逻辑一致
内容的提问来源于stack exchange,提问作者Ly000123
相关产品推荐
相关产品推荐

