如何在 julia 中创建特定长度的缺失值向量?

uma*_*ani 5 julia

R我可以创建一个向量长度为​​ 5 的所有NA_real_值:

x <- 1:5
length(x)
## [1] 5
rep(NA_real_, times = length(x))
## [1] NA NA NA NA NA  
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 中做同样的事情julia?我可以创建一个包含零的向量,但我不知道如何在其中放置缺失值:

v = Vector{Float64}(undef, 5)
## 5-element Array{Float64,1}:
 0.0
 0.0
 0.0
 0.0
 0.0
Run Code Online (Sandbox Code Playgroud)

PaS*_*STE 8

Julia 中的缺失值称为missing。它是一个类型为 的单例Missing。您可以创建一个缺失值向量,如下所示:

v = Vector{Missing}(undef, 5)
# 5-element Array{Missing,1}:
#  missing
#  missing
#  missing
#  missing
#  missing
Run Code Online (Sandbox Code Playgroud)

或者,更方便地使用fill

v = fill(missing, 5)
Run Code Online (Sandbox Code Playgroud)

但是请注意,与 R 不同的是,Missing它不与其他数字类型共享类型:它是它自己的类型。注意当您尝试将 aFloat64放入Missings的向量时会发生什么:

v = fill(missing, 5)
# 5-element Array{Missing,1}:
#  missing
#  missing
#  missing
#  missing
#  missing

v[1] = 3.14
# ERROR: MethodError: convert(::Type{Union{}}, ::Float64) is ambiguous.
Run Code Online (Sandbox Code Playgroud)

这意味着如果你想创建一个只包含缺失值的向量,但你希望它也能够包含一个像 a 这样的数值Float64,你应该明确:

v = convert(Array{Union{Float64,Missing}}, v)
# 5-element Array{Union{Missing, Float64},1}:
#  missing
#  missing
#  missing
#  missing
#  missing

v[1] = 3.14;
v
# 5-element Array{Union{Missing, Float64},1}:
#  3.14
#   missing
#   missing
#   missing
#   missing
Run Code Online (Sandbox Code Playgroud)

  • 是的,但是“学习”就像编译一样,只需要一次时间。 (2认同)

Osc*_*ith 4

Vector{Union{Float64,Missing}}(missing, 5)应该做你想做的事。

  • Missings.jl 包还提供“missings(Float64, 5)”作为简写。 (3认同)