无法在Base/Tidier中使用@select语句,报错@select未定义求助
@select报错UndefVarError: @select not defined的原因及解决办法 核心原因
- 未导入对应宏所属的包
- 你使用的Base风格(带
:列名)的@select、@transform、@subset属于DataFramesMeta.jl包,并非Julia Base或DataFrames.jl自带功能,必须先安装并导入该包才能使用。 - Tidier风格(直接写列名)的
@select、@mutate、@filter属于Tidier.jl包,同样需要安装导入后才能调用。
- 你使用的Base风格(带
- 包未正确加载或版本过旧
- 即便安装了包,若代码开头没有用
using DataFramesMeta或using Tidier加载,宏依然无法被识别。 - 旧版本的
DataFramesMeta或Tidier可能未包含@select宏,建议更新到最新版本。
- 即便安装了包,若代码开头没有用
修正后的代码示例
DataFramesMeta(Base风格)版本
using DataFrames, DataFramesMeta names = ["Sally", "Bob", "Alice", "Hank"] grades = [1, 5, 8.5, 4] df = DataFrame(; name=names, grades=grades) @chain df begin @transform(:grades_new = :grades/2) @subset(:name .== "Sally") @select(:grades) end
Tidier版本
using DataFrames, Tidier names = ["Sally", "Bob", "Alice", "Hank"] grades = [1, 5, 8.5, 4] df = DataFrame(; name=names, grades=grades) @chain df begin @mutate(grades_new = grades/2) @filter(name == "Sally") @select(grades) end
内容的提问来源于stack exchange,提问作者awoj
相关产品推荐
相关产品推荐

