如何在 Julia 中添加 missing 和 value 并获取值而不是 missing

How to add missing and value in Julia and get the value instead of missing

新版本的 Julia (1.3.0) 是否可以添加“缺失”+ 1 并得到“1”而不是“缺失”?我想对数组中的两列求和并跳过缺失的部分,但保持相同的行数。谢谢!

鉴于您的要求,我建议您定义自己的自定义添加项以实现您想要的规则:

julia> ⨨(::Missing, ::Missing) = missing
⨨ (generic function with 1 method)

julia> ⨨(x, ::Missing) = x
⨨ (generic function with 2 methods)

julia> ⨨(::Missing, x) = x
⨨ (generic function with 3 methods)

julia> ⨨(x, y) = x + y
⨨ (generic function with 4 methods)

julia> [1, 2, missing, missing] .⨨ [10, missing, 30, missing]
4-element Vector{Union{Missing, Int64}}:
 11
  2
 30
   missing

在我的示例中, 可以通过 \plustrif<tab> 键入(您可以使用任何其他被接受为运算符的符号)。

这是实现您想要的最有效的方法。

这是对 missing 的一种不寻常的处理 - 如果我理解正确的话,您希望 missing 在添加到另一个数字时表现得像零,并且在添加时表现得像 missing到另一个 missing。鉴于这有点不寻常,我会明确地写出来:

julia> a = [1, missing, missing]; b = [2, 1, missing];

julia> ifelse.(ismissing.(a) .& ismissing.(b), missing, coalesce.(a, 0) .+ coalesce.(b, 0))
3-element Vector{Union{Missing, Int64}}:
 3
 1
  missing

coalesce 将上面的 missing 替换为 0,但仅当添加的两个值中的任何一个不缺失时才使用该加法的结果。