在 R
中,我可以使用所有 NA_real_
值创建一个长度为 5 的向量:
x <- 1:5
length(x)
## [1] 5
rep(NA_real_, times = length(x))
## [1] NA NA NA NA NA
如何在 julia
中执行相同的操作?我可以创建一个包含零的向量,但我不知道如何在其中放置缺失值:
v = Vector{Float64}(undef, 5)
## 5-element Array{Float64,1}:
0.0
0.0
0.0
0.0
0.0
答案 0 :(得分:8)
Julia 中的缺失值称为 missing
。它是 Missing
类型的单例。您可以像这样创建一个缺失值向量:
v = Vector{Missing}(undef, 5)
# 5-element Array{Missing,1}:
# missing
# missing
# missing
# missing
# missing
或者,使用 fill
更方便:
v = fill(missing, 5)
但是请注意,与 R 不同的是,Missing
不与其他数字类型共享类型:它是它自己的类型。注意当您尝试将 Float64
放入 Missing
的向量时会发生什么:
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.
这意味着如果你想创建一个只包含缺失值的向量,但你希望它也能够包含一个数值,比如 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
答案 1 :(得分:4)
Vector{Union{Float64,Missing}}(missing, 5)
应该做你想做的事。