Missing Values, Nothing & Optional Data
Union{T, Nothing} and Union{T, Missing} are efficiently represented (small-union optimization).
absence of a value (software) no — errors in arithmetic unknown value (statistics) yes — missing + 1 == missing undefined numeric result
Union{T, Nothing} and Union{T, Missing} are efficiently represented (small-union optimization).
x = [1, missing, 3] # Vector{Union{Missing, Int64}}
sum(x) # missing
sum(skipmissing(x)) # 4
coalesce.(x, 0) # [1, 0, 3]
ismissing(x[2])
missing == 1 # missing (three-valued logic)
isequal(missing, missing) # true
missing || true # true
collect(skipmissing(x))
dropmissing(df) # DataFrames
passmissing(f)(missing) # Missings.jl
r = findfirst(==(9), [1, 2]) # nothing
isnothing(r) && println("not found")
something(r, 0) # 0 (first non-nothing value)