在Julia中找到R的is.na函数中缺少的值

Jul*_*ner 2 r missing-data julia

Julia 1.0.0 文档说明了Julia和R中的缺失值:

在Julia中,缺失值由缺少的对象而不是NA表示.使用ismissing(x)而不是isna(x).通常使用skipmissing函数而不是na.rm = TRUE(尽管在某些特定情况下,函数采用skipmissing参数).

以下是我希望在Julia中复制的R中的示例代码:

> v = c(1, 2, NA, 4)
> is.na(v)
[1] FALSE FALSE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

(首先请注意,这is.na是R函数的正确拼写,不是isna上面的引文所示,但这不是我的观点.)

如果我按照文档的建议ismissing在Julia中使用,我得到的结果与R不同.

julia> v = [1, 2, missing, 4]
4-element Array{Union{Missing, Int64},1}:
 1
 2
  missing
 4

# Note that based on R, I was expecting: `false false true false` 
# though obviously in a different output format.
julia> ismissing(v)
false
Run Code Online (Sandbox Code Playgroud)

要复制R代码,我似乎必须做以下事情:

julia> [ismissing(x) for x in v]
4-element Array{Bool,1}:
 false
 false
  true
 false
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它并不像is.naR中那样简洁.也许我错过了一些东西.

我也尝试过:

julia> ismissing(v[:])
false

julia> ismissing(v[1:end])
false
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Bog*_*ski 5

您可以播放ismissing带有.:

julia> v = [1, 2, missing, 4]
4-element Array{Union{Missing, Int64},1}:
 1
 2
  missing
 4

julia> ismissing.(v)
4-element BitArray{1}:
 false
 false
  true
 false
Run Code Online (Sandbox Code Playgroud)

  • 我已经提交了拉取请求来修复此问题:https://github.com/JuliaLang/julia/pull/29332 (2认同)