像R的is.na函数一样在Julia中找到缺失的值

时间:2018-09-16 20:04:54

标签: r julia missing-data

Julia 1.0.0 documentation谈到了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

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

如果我按照文档的建议在Julia中使用ismissing,则得到的结果与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

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

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

可以,但是不像R中的is.na简洁。也许我遗漏了一些东西。

我也尝试过:

julia> ismissing(v[:])
false

julia> ismissing(v[1:end])
false

有什么建议吗?

1 个答案:

答案 0 :(得分: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