Julia:在缺少的向量中查找大于0的值

Julia:在缺少的向量中查找大于0的值,julia,missing-data,Julia,Missing Data,我对Julia是个新手,作为一个Matlab/R用户,我发现在大多数情况下,与它一起工作非常愉快 但是,我对缺少的值以及如何使用它们感到有点困惑 假设我有一个向量: a=[missing -1 2 3 -12] #Julia a=[NaN -1 2 3 -12] #Matlab 在Matlab中,我只需执行以下操作,即可找到0以下的值 a(a<0) 不幸的是,这在朱莉娅身上不起作用,当我尝试时 a[a.<0] 我还尝试了以下方法 a[findall(skipmissing(a)

我对Julia是个新手,作为一个Matlab/R用户,我发现在大多数情况下,与它一起工作非常愉快

但是,我对缺少的值以及如何使用它们感到有点困惑

假设我有一个向量:

a=[missing -1 2 3 -12] #Julia
a=[NaN -1 2 3 -12] #Matlab
在Matlab中,我只需执行以下操作,即可找到0以下的值

a(a<0)
不幸的是,这在朱莉娅身上不起作用,当我尝试时

a[a.<0]
我还尝试了以下方法

a[findall(skipmissing(a).<0)]
当然,因为我跳过了findall函数中缺少的值。我很确定有一种简单且合乎逻辑的方法可以做到这一点,但我似乎找不到

有人能告诉我怎么走吗

最好的,
Richard这是最简单的方法:

julia> a=[missing -1 2 3 -12]
1×5 Array{Union{Missing, Int64},2}:
 missing  -1  2  3  -12

julia> a[isless.(a, 0)]
2-element Array{Union{Missing, Int64},1}:
  -1
 -12
这使用了这样一个事实,即isless认为缺失比任何数字都大

另一种写作方式:

julia> filter(x -> isless(x, 0), a)
2-element Array{Union{Missing, Int64},1}:
  -1
 -12
现在,为了避免isless的这种特殊技巧,您可以使用coalesce执行以下操作,这是一种可用于安全处理缺失值的通用方法:

最后,您可以更加明确,如:

julia> filter(x -> !ismissing(x) && x < 0, a)
2-element Array{Union{Missing, Int64},1}:
  -1
 -12


您也可以在上面的示例中使用理解语法,以下是最简单的方法:

julia> a=[missing -1 2 3 -12]
1×5 Array{Union{Missing, Int64},2}:
 missing  -1  2  3  -12

julia> a[isless.(a, 0)]
2-element Array{Union{Missing, Int64},1}:
  -1
 -12
这使用了这样一个事实,即isless认为缺失比任何数字都大

另一种写作方式:

julia> filter(x -> isless(x, 0), a)
2-element Array{Union{Missing, Int64},1}:
  -1
 -12
现在,为了避免isless的这种特殊技巧,您可以使用coalesce执行以下操作,这是一种可用于安全处理缺失值的通用方法:

最后,您可以更加明确,如:

julia> filter(x -> !ismissing(x) && x < 0, a)
2-element Array{Union{Missing, Int64},1}:
  -1
 -12


您也可以在上面的示例中使用理解语法

注意,Matlab示例与Julia示例并不等效。如果在Julia中使用NaN而不是missing,则a[a。注意,Matlab示例与Julia示例并不等效。如果在Julia中使用NaN而不是missing,则a[a]。
julia> filter(x -> coalesce(x < 0, false), a)
2-element Array{Union{Missing, Int64},1}:
  -1
 -12
julia> filter(x -> !ismissing(x) && x < 0, a)
2-element Array{Union{Missing, Int64},1}:
  -1
 -12
julia> [v for v in a if !ismissing(v) && v < 0]
2-element Array{Int64,1}:
  -1
 -12