将缺失的数组转换为 NaN

Convert missing Array to NaN

让我们以我使用 ShiftedArrays 包 lag() 函数的例子为例。 我将数组 o 与数组 c 进行比较。如果 o 小于 lag(c,1) 说真,假。

# dummy data
o = collect(5.0:1.0:14)
c = collect(1.0:1.0:10)
# lag
using ShiftedArrays
o_c_lag1 = o .< lag(c,1)

输出:

print(o_c_lag1)
Any[missing, false, false, false, false, false, false, false, false, false]

我的问题在这里。在将缺失值转换为 NaN 和 Float64 输出类型的同时,是否有一种成功的方法来进行 o 和 c bool 比较?

我输出的类型是 Any。我正在寻找编写快速代码的方法。所以我希望它是 Float64。

如果我生成 NaN:

nan = [NaN]
1-element Array{Float64,1}:
 NaN

我将编写这行代码的数千种变体:

o_c_lag1 = o .< lag(c,1)

有没有办法将一行中的 Missing 类型转换为 NaN?那么我可以输出 Float64 吗?

换几千个Array会很麻烦。

** 编辑

也许我可以将所有数组存储在 R 等效列表()中。并遍历所有数组,将所有缺失更改为 NaN 并转换为 Float64 类型。

我不熟悉 ShiftedArrays 包,但您可以执行以下操作:

julia> o_c_lag1
10-element Array{Any,1}:
      missing
 false
 false
 false
 false
 false
 false
 false
 false
 false

julia> Float64.(replace(o_c_lag1, missing => NaN)))
10-element Array{Float64,1}:
 NaN
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0

您可以使用replace(x, missing => NaN)missing更改为NaN,然后只需将数组转换为Float64s。