如何在 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,但仅当添加的两个值中的任何一个不缺失时才使用该加法的结果。
新版本的 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,但仅当添加的两个值中的任何一个不缺失时才使用该加法的结果。