在 julia-0.5 中将基本数学运算符与 Julia Nullables 结合使用

Using base math operators with Julia Nullables in julia-0.5

我在 Julia 0.5.1-pre+2 中使用从 github 本地提取和构建的 Dataframes,我也尝试了 Mac dmg 下载 0.5 下载,我是无法理解如何正确使用可空值和可空数组。

df = DataFrame(x=rand(20), y=rand(20))

 mean(df[:x])
ERROR: MethodError: no method matching /(::Nullable{Float64}, ::Int64)

所以这个错误似乎告诉我这个操作不是为 Nullable{Float} 和 Int 定义的,只是尝试像

这样的操作
Nullable(2.) / 1

会导致同样的错误。

我对 DataFrames 的 documentation 感到困惑,因为它显示了如下操作:

mean(df[1])
median(df[1])

mean(df[:A])
median(df[:A])

df = DataFrame(A = 1:4, B = randn(4))
colwise(cumsum, df)

所有这些在我的机器上执行时都会导致类似的未定义方法错误。

我不确定这是当前生态系统中的正确行为还是 build/package 版本问题。

出于某种原因,您安装了 DataFrames 的开发(主)版本。如果您在某个时候有 运行 Pkg.develop("DataFrames"),可能会发生一种可能的方式。

DataFrames 正在进行重大重写,因此许多功能可能无法在开发版本上正常运行。发布版本应该可以正常工作。删除你的 .julia 文件夹让你回到发布版本。

您可以使用 Pkg.status 功能检查包裹的状态。例如

julia> Pkg.status("DataFrames")
  - DataFrames                    0.8.4

如果任何包安装了主版本,将在结果中指定。

julia> Pkg.status("JavaCall")
  - JavaCall                      0.4.2+             master 

不带任何参数的函数Pkg.status()将显示所有包的状态。